//在书上看到的一段程序,发现,如果类没有虚函数,sizeof只有1字节,若有虚函数,就变成4个字节,如果是虚继承,同样是4个字节,而多继承和单继承都只是1个字节
#include<iostream>
#include<complex>
using namespace std;
class A{
public:
A(){cout<<""<<endl;}
~A(){cout<<""<<endl;}
virtual void f(int){};
virtual void f(double){};
virtual void g(int i=10){};
void g2(int i=10){};
};
class B:public A
{
public:
B(){};
~B(){};
void f(complex<double>){};
virtual void g(int i=20){};
};
class C
{
};
class D:public virtual C
{
};
int main()
{
A a;
B b;
A * ptr=new B;
cout<<sizeof(A)<<endl;//4
cout<<sizeof(B)<<endl;//4 由于存在虚函数,所以有虚表(虚指针)
cout<<sizeof(C)<<endl;//1
cout<<sizeof(D)<<endl;//4,因为虚继承
}