今天为了加深自己对虚函数的理解,所以做了一个有趣的小试验。定义了类A、类B并且类C继承了类A类B。代码如下: #include
#include
class A { public: A(){} virtual void InfoA() { std::cout<< " A::InfoA() " << std::endl; } private: char arrayA[3]; }; class B { public: B() {} virtual void InofB() { std::cout<< " B::InfoB() " <
____________________ |__________| |[0]void A::InfoA()| | arrayA[0]| |__________________| | arrayA[1]| | arrayA[2]| |__________| 内存对齐 ____________ | class B | |__________| | _vfptr |----->____________________ |__________| |[0]void B::InfoB()| | arrayB[0]| |__________________| | arrayB[1]| | arrayB[2]| |__________| 内存对齐 ____________ | class C | |__________| | A | |__________| | _vfptr |----->____________________ |__________| |[0]void A::InfoA()| | arrayA[0]| |__________________| | arrayA[1]| | arrayA[2]| | 内存对齐 | |__________| | B | |__________| | _vfptr |----->____________________ |__________| |[0]void B::InfoB()| | arrayB[0]| |__________________| | arrayB[1]| | arrayB[2]| | 内存对齐 | |__________| | arrayC[0]| | arrayC[1]| | arrayC[2]| | 内存对齐 | |__________| 这里我还留下一个疑问,现在是类继承的虚函数的情况,那么TEMPLATE类的继承虚函数的情况又是怎样的?等着两天有时间再做个实验看看。。。待续。。。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jznsmail/archive/2004/12/01/200471.aspx
关于C++中的虚函数
最新推荐文章于 2024-10-16 10:13:45 发布