虚函数(二)
1 #include <iostream>
2 using namespace std;
3
4 class A
5 {
6 public:
7 int m_data1;
8 virtual void vfunc1(){}
9 virtual void vfunc2(){}
10 void func1(){}
11
12 };
13
14 class B:public A
15 {
16 public:
17 int m_data2;
18 virtual void vfunc1(){}
19 };
20
21 class C:public B
22 {
23 public:
24 int m_data1;
25 virtual void vfunc2(){}
26 };
27
28 int main()
29 {
30 cout << sizeof(A) << endl;
31 cout << sizeof(B) << endl;
32 cout << sizeof(C) << endl;
33 return 0;
34 }
输出答案为:
8
12
16
因为vptr得字节数为4,而派生类的内存变大了是因为派生类增加了新的变量,下图为仔细的解释