从零单排c++ primer(17)

(1)如果一个名字在派生类的作用域内无法正确解析,则编译器将继续在外层的基类作用域中寻找该名字的定义。
(2)派生类的成员将隐藏同名的基类成员。
(3)除了覆盖继承而来的虚函数之外,派生类最好不要重用其他定义在基类中的名字。
(4)声明在内层作用域的函数并不会重载声明在外层作用域的函数。定义在派生类中的函数也不会重载其基类中的成员。
(5)基类函数的每个实例在派生类中都必须是可访问。对派生类没有重新定义的重载版本的访问实际上是对using声明点的访问。
(6)继承关系对基类拷贝控制最直接的影响是基类通常应该定义一个虚析构函数,这样就能动态分配继承体系中的对象了。
(7)通过在基类中将析构函数定义成虚函数以确保执行正确的析构函数版本。
(8)如果基类的析构函数不是虚函数,则delete一个指向派生类对象的基类指针将产生未定义的行为。
(9)当派生类定义了拷贝或移动操作时,该操作负责拷贝或移动包括基类部分成员在内的整个对象。
(10)在默认情况下,基类默认构造函初始化派生类对象的基类部分。如果我们想拷贝或移动基类部分,则必须在派生类的构造函数初试列表中显式地使用基类的拷贝或移动构造函数。
(11)如果构造函数或者析构函数调用了某个虚函数,则我们应该执行与构造函数或析构函数所属类型相对于的虚函数版本。
(12)派生类继承基类构造函数的方式是提供一条注明了基类名的using声明语句。
(13)当派生类对象被赋值给基类时,其中的派生类部分将被“切掉”,因此容器和存在继承关系的类型无法兼容。
(14)当我们希望在容器中存放具有继承关系的对象时,我们实际上存放的通常是基类的指针。
(15)令一个类公有地继承令一个类时,派生类应当反映与其基类的“是一种(Is A)”关系。
(16)模板是c++中泛型编程的基础,一个模板就是一个创建类或者函数的蓝图或者说公式。
(17)模板定义以关键字template开始,后跟一个模板参数列表,这是一个逗号分隔的一个或多个模板参数的列表,用小于号和大于号包围起来。
(18)在模板定义中,模板参数列表不能为空。
(19)编译器用推断出的模板参数来为我们实例化一个特定版本的函数。
(20)除了定义类型参数,还可以在模板中定义非类型参数。一个非类型参数表示一个值而非一个类型。
(21)当一个模板被实例化时,非类型参数被一个用户提供的或编译器推断出的值所代替。非类型模板参数的模板实参必须是常量表达式。

你可能感兴趣的:(C++,学习,语言,VC,C++Primer)