C++ 虚指针 相关的问题
誰伴我闖荡 2011-01-15 06:56:15 今天在看Lippman的《C++对象模型》,
问题大家看了我下面写的代码应该就知道了,
在Visual Studio 2010下编写的。
class A{
public:
virtual void method1(){
}
private:
int a;
int b;
};
class B: public A{
public:
virtual void method2(){
}
private:
int c;
};
int main()
{
A* a = new A();
B* b = new B();
return 0;
}
这里,我打印了a所指向的对象的大小是12,这个很容易理解,就是
A中的a, b 的大小是8字节,然后加上vptr 4字节,所以就是12字节。。
然后打印b所指向的大小是16字节,这里有点纳闷,B中有一个变量c,
加上从A中继承的12字节,现在就是16个字节了,然而还有一个vptr,也就应该是20字节。
然而打印的却是16字节。
这里我分析应该是共享了同一个vptr,为什么?C++对象模型说的却不是这样的。
谢谢了。