1.C++ 虚函数的实现是为class安插一个vptr指向一个数组。数组第一项通常保存type_info。其他项为虚函数地址。或许还存在指向virtual base class的指针。
2.通过变量调用虚函数,不会带来运行期的额外成本。编译期间就确定了函数的地址。
3.在class struct中,同一access session下的数据总是连续存储在内存中。(static data和函数除外)。
4.当用父类的变量来保存子类的变量时,不管是调用父类的copy还是assign函数,都将对子类裁剪。产生新的父类。引用和指针则不会。因为他们都没有产生新的父类。
5.C++ 用于支持多态的方法
一组隐式的转化操作。
virtual function
dynamic_cast和type_id运算符
6.编译器总是有意图修改你的或者合成默认构造函数。以便满足编译器的需要。通常是将遗漏的成员变量逐一调用其默认构造函数以及调用父类的默认构造函数。成员的构造视其申明顺序。当类中申明了或者继承了至少一个virtual function,产生virtual function table,填入virtual function的地址。为class添加额外的vptr,指向virtual function table。编译器还会改写指针或者引用对虚函数的调用。
7.class 的=运算符如果产生了新的对象,则调用copy构造函数,否则调用assign函数。
8.必须在成员初始化列表中初始化
初始化一个引用
初始化一个常量
父类无默认构造函数
成员无默认构造函数
9.成员初始化表比构造函数里面赋值效率高.
10.使用指针访问成员的效率与是否是继承自虚基类有关。需要运行期决定。