根据虚函数的工作机制,通常编译器处理虚函数时会给对象添加一个隐藏成员,隐藏成员中保存了一个指向函数地址数组的指针,因此类中添加虚函数后,sizeof(类名)应为该指针的大小。
测试代码如下:
#include<iostream>
#include<complex>
using namespace std;
class A{
public:
A(){ cout << "构造函数"; }
~A(){ cout << "析构函数" << endl; }
virtual void f(int)
{
cout << "虚函数" << endl;
}
};
class B{
public:
B(){ cout << "构造函数"; }
~B(){ cout << "析构函数" << endl; }
};
int main()
{
cout <<"class A size: " <<sizeof(A) << endl;
cout << "class B size: "<<sizeof(B) << endl;
system("pause");
}
执行结果如下: