摘要: 1.和类一样,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型。 2.C++包含两种枚举:限定作用域的和不限定作用域的。C++11新标准引入了限定作用域的枚举类型。 3.默认情况下,枚举值从0开始,依次加1,如果没有显示提供值,就在前一个枚举值的基础上加1。枚举成员是const的。 4.只要e 阅读全文
posted @ 2017-08-31 21:48 MyCPlusPlus 阅读(1189) 评论(0) 推荐(0)
摘要: 1.dynamic_cast运算符的使用形式如下: 2.如果一条dynamic_cast 语句的转换目标是指针类型并且失败了,则结果为0,如果转换目标是引用类型并且失败了,则dynamic_cast运算符将抛出一个bad_cast异常(因为不存在空引用)。 3.我们可以对一个空指针执行dynamic 阅读全文
posted @ 2017-08-31 21:08 MyCPlusPlus 阅读(193) 评论(0) 推荐(0)
摘要: 1.当我们使用一条new表达式时,实际执行了三步操作。 new表达式调用一个名为operator new ( 或者operator new[] ) 的标准库函数。该函数分配一块足够大的,原始的,未命名的内存空间以便存储特定类型的对象(或对象的数组) 编译器运行相应的构造函数以构造这些对象,并为其传入 阅读全文
posted @ 2017-08-31 15:28 MyCPlusPlus 阅读(360) 评论(0) 推荐(0)
摘要: 1.在多重继承中,基类的构造顺序与派生类列表中基类的出现顺序保持一致,与初始值列表中的顺序无关。 2.在C++11新标准中,允许派生类从它的一个或几个基类中继承构造函数。但是如果从多个基类中继承了相同的构造函数(即形参列表完全相同)则程序将产生错误。这个时候这个类必须为该构造函数定义自己的版本。 c 阅读全文
posted @ 2017-08-30 17:35 MyCPlusPlus 阅读(360) 评论(0) 推荐(0)
摘要: 1.我们既可以用 using 声明整个空间,也可以声明部分名字。 2.头文件不应包含 using 声明,因为头文件会拷贝到所引用它的文件中去,所以每个使用了该头文件的文件就都会有这个声明。 3.命名空间可以是不连续的。 4.模板特例化必须定义在原始模板所属的命名空间中,和其它命名空间名字类似,只要我 阅读全文
posted @ 2017-08-30 11:00 MyCPlusPlus 阅读(477) 评论(0) 推荐(0)
摘要: 1.栈展开过程沿着嵌套函数的调用链不断查找,直到找到了与异常匹配的catch句子为止,或者也可能一直没找到匹配的catch,则程序将调用terminate,退出主函数后查找过程终止。假设找到了一个catch,则执行其中的代码,执行完之后,找到与try块关联的最后一个catch子句之后的点,并从这里继 阅读全文
posted @ 2017-08-29 15:09 MyCPlusPlus 阅读(427) 评论(0) 推荐(0)
摘要: 1.编译器用推断出的模板参数来为我们实例化一个特定版本的函数。 2.每个类型参数前必须使用关键字class或typename。在模板参数列表中,这两个关键字含义相同,可以互换使用,也可以同时使用。 3.除了定义类型参数,还可以在模板中定义非类型参数,一个非类型参数表示一个值而非一个类型,当一个模板被 阅读全文
posted @ 2017-08-27 17:47 MyCPlusPlus 阅读(1126) 评论(0) 推荐(0)
摘要: 某些函数需要将其一个或多个实参连同类型不变的转发给其他函数,这种情况下我们需要保持被转发实参的所有性质,包括实参类型是否是const的以及实参是左值还是右值。 我们可以使用右值引用来解决上述问题: 但是函数func对于接受一个左值引用的函数工作的很好,但不能接受右值引用参数的函数: 为了解决上述问题 阅读全文
posted @ 2017-08-27 16:33 MyCPlusPlus 阅读(357) 评论(0) 推荐(0)
摘要: 标准库move函数是使用右值引用的模板的一个很好的例子。标准库是这样定义std::move的: 我们考虑如下代码的工作过程: 在第一个赋值中,实参是string类型的右值,因此过程为: 推断T的类型为 string remove_reference<string> 的 type 成员是 string 阅读全文
posted @ 2017-08-27 15:55 MyCPlusPlus 阅读(18182) 评论(0) 推荐(0)
摘要: 1.基类通常都应该定义一个虚析构函数,即使该函数不执行任何实际操作也是如此。 2.任何构造函数之外的非静态函数都可以是虚函数,关键字virtual只能出现在类内部的声明语句之前而不能用于类外部的函数定义。如果基类把一个函数声明成虚函数,则该函数在派生类中隐式地也是虚函数。成员函数如果没有被声明成虚函 阅读全文
posted @ 2017-08-19 22:16 MyCPlusPlus 阅读(300) 评论(0) 推荐(0)