从零单排c++ primer(16)

(1)基类的指针或引用的静态类型可能与其动态类型不一致。
(2)之所以存在派生类向基类的类型转换是因为每个派生类对象都包含一个基类部分,而基类的引用或指针可以绑定到该基类部分上。
(3)一个基类的对象既可以以独立的形式存在,也可以作为派生类对象的一部分存在。
(4)编译器在编译时无法确定某个特定的转换在运行时是否安全,这是因为编译器只能通过检查指针或者引用的静态类型来推断该转换是否合法。
(5)派生类向基类的自动转换支队指针或引用类型有效,在派生类类型和基类类型之间不存在这样的转换。
(6)当我们用个派生类对象为一个基类对象初始化或赋值时,只有该派生类对象中的基类部分会被拷贝、移动或赋值,它的派生类部分将被忽略掉。
(7)从派生类向基类的类型转换只对指针和引用有效,基类向派生类不存在隐式类型转换。
(8)和任何其他成员一样,派生类向基类的类型转换也可能会由于访问受限而变得不可行。
(9)一个派生类的函数如果覆盖了某个继承而来的虚函数,则它的形参类型必须与被它覆盖的基类函数完全一致,返回值也必须匹配。
(10)如果虚函数使用了默认实参,则基类和派生类中定义的默认实参最好一致。
(11)通常情况下,只有成员函数或友元中的代码才需要使用作用域运算符来回避虚函数机制。
(12)如果一个派生类虚函数需要调用它的基类版本,但是没有使用作用域运算符,则在运行是该调用将被解析为对派生类版本自身的调用,从而导致无限递归。
(13)含有或者未覆盖直接继承纯虚函数的类是抽象基类。抽象基类负责定义接口,而后学的其他类可以覆盖该接口。
(14)我们不能创建抽象基类的对象。
(15)重构负责设计类的体系以便将操作/或数据从一个类移动到另一个类中。
(16)一旦类被重构了,就意味着我们必须重新编译含有这些类的代码。
(17)派生类的成员或友元只能通过派生类对象来访问基类的受保护成员。派生类对于一个基类对象中的受保护的成员没有任何访问特权。
(18)派生访问说明符的目的是控制派生类用户对于基类成员的访问权限。
(19)对于代码中的某个给定的节点来说,如果基类的公有成员是可访问的,则派生类向基类的类型转换也是可访问的,反之则不行。
(20)友元关系不能传递,友元关系也不能继承。
(21)派生类只能为那些它可以访问的名字提供using声明。
(22)使用class关键字定义的派生类是私有继承的,而使用struct关键字定义的派生类是公用继承的。
(23)一个私有派生的类最好显式地将private声明出来,而不是仅仅依赖于默认的设置。显式声明的好处就是可以令私有继承关系清晰明了,不至于产生误会。

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