C++ 对象 布局
一个基类中定义了一个虚函数,那么派生类在继承这个基类后,派生类中私有的成员变量是在上面那个虚函数指针前面还是后面呢?我们可以通过一个小代码测试一下:
class A{ public: int b; string name; A(){} virtual ~A(){} }; class B : public A{ public: int c; };
int main(int argc , char *argv[]) { B b; cout<< &(((B*)0)->c)<<endl;//12前面有十二个字节 system("pause"); return EXIT_SUCCESS; }
main中输出的结果是12,说明B.c前面有十二个字节,而b占四个字节,name占四个字节,这才八个字节,再加上虚函数表指针总共12字节就对了!!!