C 11学习笔记 4

发布 2022-06-17 16:11:28 阅读 7299

case 必须是整型常量表达式。

对已case内部变量的定义,变量的定义对之后的case是可见的,如果跳过了变量定义及初始化的语句,后面的case对变量的使用时为初始化的。

要解决,可以把变量的定义放在以个语句块中,后面就不可见了。

do while 不允许在条件部分定义变量。

trycatch(runtime_error err)

cout<<

当i!=j是,运行结果是,no same

what()返回的是runtime_error类的string对象副本;

寻找处理的**于函数掉用正好相反。当抛出异常,首先搜索抛出该异常的函数。如果么找到匹配的catch语句,终止该函数,并在调用该函数的函数里找,如此循环。

如果最终么有找到,程序将转到名为terminate的标准库函数,该函数的行为与系统有关,一般是导致非正常退出。

如果没有try语句,系统发生异常也将调用terminate函数。

标准异常:(4个头文件中)

exception,定义了最常用的异常类exception。它只报告异常的发生,不提供任何额外信息。

new,定义了bad_alloc异常类型,type_info,定义了bad_cast异常类型。

stdexcept,定义了常用的异常类:如下。

exception,最常见的问题。

runtime_error,只有运行时才能检测出的问题。

range_error,运行时错误:生成结果超出了有意义的值域范围。

overflow_error,运行时错误:计算上溢。

underflow_error,运行时错误,计算下溢。

logic_error,程序逻辑错误。

domain_error,逻辑错误:参数对应的结果值不存在。

invalid_argument,逻辑错误:参数无效。

length_error,逻辑错误:试图创建以个超出该类型最大长度的对象。

out_of_range,逻辑错误:使用一个超出有效范围的值。

只能默认初始化exception。bad_alloc和bad_cast对象,不能提供初始值。

而其他的必须提供c风格字符串const char*,或string

异常类只提供了一个成员函数what(),如果无初始值,返回值右编辑器决定。

C11学习笔记 5

参数传递时,如果是引用类型,它将绑定到对应的实参上,否者,将实参的值拷贝后赋给形参。引用可避免拷贝,如果不需要改变参数,最好定义成常量引用。和其他初始化一样,当用实参初始化时会忽略顶层const,当形参有顶层const时,传给它常量对象或非常量对象都可以。我们可以用非常量初始化一个底层const对象...

C 11学习笔记 11

动态分配的内存,只有在显式释放是,这些对象才会销毁。但是标准库中的两智能指针可以确保自动释放。除了静态内存和栈内存,每个程序还拥有一个内存池。这部分内存被称作自由空间或堆。静态内存用来保存局部static对象 类static数据成员以及定义在任何函数之外的变量。栈内存用来保存定义在函数没得非stat...

C 11学习笔记 16

tuple是类型pair的模板。不同tuple类型的成员类型也不同,但一个tuple可以有任意数量的成员。每个确定的tuple类型的成员数目是固定的。当我们希望将一些数据组合成单一对象,但有不想麻烦地定义一个新数据结构来表示时,tuple是非常有用的。快速而随意 的数据结构 tuple类型及其伴随类...