从零单排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)模板定义以keywordtemplate開始,后跟一个模板參数列表,这是一个逗号分隔的一个或多个模板參数的列表,用小于号和大于号包围起来。
(18)在模板定义中,模板參数列表不能为空。
(19)编译器用判断出的模板參数来为我们实例化一个特定版本号的函数。
(20)除了定义类型參数,还能够在模板中定义非类型參数。一个非类型參数表示一个值而非一个类型。
(21)当一个模板被实例化时,非类型參数被一个用户提供的或编译器判断出的值所取代。非类型模板參数的模板实參必须是常量表达式。
posted @ 2014-07-07 15:44  hrhguanli  阅读(117)  评论(0编辑  收藏  举报