读书人

Inside the C++ Object Model 深度探索

发布时间: 2013-11-08 17:51:56 作者: rapoo

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的声明

暂无评论。 

读书人网 >C++

热点推荐