三金兄的自留地儿

导航

虚函数(二)

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,而派生类的内存变大了是因为派生类增加了新的变量,下图为仔细的解释

posted on 2011-02-15 17:48  三金兄的自留地儿  阅读(134)  评论(0编辑  收藏  举报