- 每一个nonstatic data member的offset在编译期即可获得,即使它属于base class
- 通过对象和通过对像指针对于data member的存取操作,当data member是一个struct member,class member,单一继承、多重继承的情况完全一样,当data member是一个来自virtual base class的member的时候,则存在差异
- static data member存放在数据区,并不算作class的大小的组成部分
- C++语言保证 出现在derived class的base class subobject有其完整原样性
- static member function
- 不能是const virtual 和volatile
- 不能直接存取class中的nonstatic member
- 不需经由class object调用
- virtual base class constructor 被调用的时机:只有当一个完整的class object被定义出来,它才会被调用;如果object只是某个完整object的subobject,它就不会被调用
- 临时性对象被摧毁的时机
- 应该是对完整表达式求值过程中的最后一个步骤,该完整表达式造成临时对象的产生。所谓完整表达式,是指被涵括的表达式中最外围的那个. [p273]
- 凡是含有表达式执行结果的临时性对象,应该保存到object 的初始化操作完成为止。[P274]
- 如果一个临时性对象被绑定于一个reference,对象将残留,直到被初始化之reference的生命结束,或直到临时对象的生命范畴结束——视哪一种情况先到而定。[p275]
- 面向对象设计所需的多态性质,需要通过 pointer 或者 reference 才能体现。
- 转型(Cast)是一种编译器指令,大部分情况下它并不改变一个指针所含的地址,它只影响“被指出之内存的大小和其内容”的解释方式。void* 指针只能够含有一个地址,而不能通过它操作所指的对象。