C++虚函数表与虚表指针

带有虚函数的类,通过该类所隐含的虚函数表来实现多态机制(用来确定调用基类的成员函数,还是调用派生类的该同名函数),该类的每个对象均具有一个指向本类虚函数表的指针,这一点并非C++标准所要求的,而是编译器所采用的“内部方式”。不同平台、不同编译器厂商所生成的虚表指针在内存中的布局是不同的,有些将虚表指针置于对象内存中的开头处,有些则置于结尾处。如果涉及多重继承和虚继承,情况还将更加复杂。基于此,永远不要做任何假设,永远不要使用memcpy()之类的函数复制对象,而应该使用初始化(构造和拷构)或赋值的方式来复制对象。

注意:优先使用构造和拷构,尽量少用或不用赋值运算符。原因:赋值和初始化的性质与内部实现机制是不同的,多了一个构造的步骤。

SwingCoder

如果本文对您有所启发或助益,请微信打赏

创作时间: 2011.05.06 11:09
最后修改: 2017.05.10 15:27

本文版权:UnderwaySoft   共享协议:署名-非商业使用-禁止演绎


上一篇: C++只能创建栈对象或堆对象
下一篇: C++模板技术和泛型编程

 随机推荐:
Email: underwaySoft@126.com 微信公众号: UnderwaySoft