我是C++编程的新手,对于包含虚拟成员函数的类的大小有疑问。请通过我的以下代码:包含虚拟成员函数的类的大小
#include "stdafx.h"
#include <iostream>
using namespace std;
class BaseClass
{
private:
int a, b;
public:
BaseClass()
{
a = 10;
b = 20;
}
virtual int area()
{
return 0;
}
};
class DerivedClass1 : public BaseClass
{
int x;
public:
virtual void simple()
{
cout << "inside simple" << endl;
}
};
int main()
{
DerivedClass1 Obj;
cout << sizeof(Obj) << endl; // Displays 16 bytes
return 0;
}
上面的代码显示大小为16个字节。根据我的说法,它应该显示20个字节,因为两个虚拟指针(一个从基类继承,一个由于它自己的虚函数而被添加到派生类本身)+ Derived Class中的三个数据成员等于20个字节。所以请给我解释一下它是怎么回事......
继承虚拟指针_and_添加另一个?为什么会发生? – jogojapan 2013-02-21 05:38:02
阅读[虚拟表](http://en.wikipedia.org/wiki/Virtual_method_table) – borisbn 2013-02-21 05:38:04
如果您有多个继承,则只有其他vptrs才会出现。另外,您的实验结果非常依赖于编译器和平台;当[使用g ++编译](http://liveworkspace.org/code/10xj5R$10)时,它会输出24,与构建64位可执行文件时的VS2012一样。 – Praetorian 2013-02-21 05:52:00