一.先看一段代码
class Parent1 {
public:
void func() {
cout << "Parent1::func().." << endl;
}
private:
int a;
};
class Parent2
{
public:
void func() {
cout<< "Parent2::func().." << endl;
}
private:
int a;
};
int main() {
Parent1 p1;
Parent2 p2;
cout << "sizeof(p1)=" << sizeof(p1) << endl;
cout << "sizeof(p2)=" << sizeof(p2) << endl;
}
运行结果:
二.现在给父类把父类func()改为虚函数
class Parent1 {
public:
virtual void func() {
cout << "Parent1::func().." << endl;
}
private:
int a;
};
运行结果:这里变成了16,多出来的12个字节,证明vptr存在,也就是vptr占用的空间。
三.证明一个类最多只有一个vptr
现在给class类parent1多加一个虚函数,看运行结果。
class Parent1 {
public:
virtual void func() {
cout << "Parent1::func().." << endl;
}
virtual void func1() {
cout << "Parent1::func1().." << endl;
}
private:
int a;
};
结果:依然是16.