Inside the C++ Object Model 深度探索对象模型 5-Construction 6-Runtime 7-Object
5构造,解构,拷贝语意学 Semantics of Construction, Destruction, Copy
纯虚拟函数的存在 Presence of Pure VF
>pure virtual function可以被定义和调用invoke: 只能被静态调用statically, 不能经由虚拟机调用; Ex. inline void Abstract_base::interface() const {...} Abstract_base::interface();
>pure virtual destructor一定要定义, 每一个derived class destructor会被编译器扩展, 以静态方式调用每一个virtual base class以及上一层base class的destructor; 缺少base class destructor的定义会导致链结失败;
>继承体系中的每一个class object的destructor都会被调用; 建议-不要把virtual destructor声明为pure;
虚拟规格的存在 Virtual Specification
>一般而言把所有的成员函数都声明为virtual function, 再靠编译器的优化操作把非必要的virtual invocation去除, 不是好的设计观念; Ex. inline函数的优化被破坏;
虚拟规格中const的存在
>决定一个virtual function是否const需要考虑到subclass的函数调用(const reference, const pointer), 以及derived instance修改data member的可能性;
重新考虑class的声明
暂无评论。