博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C++ - 对象内存布局模型

Posted on 2012-09-27 16:06  神の大司命  阅读(197)  评论(0)    收藏  举报

1. 示例程序:

 1 class A
 2 {
 3 public:
 4     int num;
 5     virtual void f(); // 去掉此句:4, 16
 6 protected:
 7 private:
 8 };
 9 
10 class B : virtual public A // 去掉virtual:8, 12
11 {
12 public:
13     int dog;
14     virtual void g(); // 改为f():8, 16(这里尤其要注意)
15 protected:
16 private:
17 };
18 
19 int main() // 不变:8, 20
20 {
21     std::cout << sizeof(A) << ", " << sizeof(B) << std::endl;
22 
23     return 0;
24 }

2. 深度探索C++对象模型:

P102、110、111、115、121、123、157、165、169