有这样的代码:
#include <iostream>
class A{
int a;
int fun(){}
};
class B{
int a;
virtual int fun(){}
};
int main()
{
std::cout << sizeof(A) << " " << sizeof(B) << std::endl;
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
4 8
Run Code Online (Sandbox Code Playgroud)
为什么B类比A类大4个字节?
Mys*_*ial 12
任何具有虚函数的类都需要指向该类的vtable的指针.因此,有一个隐藏的成员,它是指针的大小.
http://en.wikipedia.org/wiki/Virtual_method_table