码迷,mamicode.com
首页 > 编程语言 > 详细

深度探索c++对象模型读书笔记:Data语意学-继承与Data member中内存对齐问题

时间:2017-03-29 19:13:02      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:bit   har   ace   public   8 8   继承   读书   style   编译器   

书中在继承之后内存对齐问题上说道下面代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 class A
 4 {
 5 private:
 6     int val;
 7     char bit1;
 8 };
 9 class B : public A
10 {
11 private:
12     char bit2;
13 };
14 class C : public B
15 {
16 private:
17     char bit3;
18 };
19 int main()
20 {
21     cout << sizeof(A) << endl << sizeof(B) << endl << sizeof(C) << endl;
22     return 0;
23 }

并说输出应该为8 12 16,并说明了这样做的理由,当时我就觉得那个理由很奇怪,或者说没看懂书中所说的理由到底是什么,于是进行了测试,发现gcc编译器中输出的结果为8 8 8,说明确实bit2,bit3和bit1绑定在了一起,起码书中的说法在现在的gcc编译器上是错误的。

深度探索c++对象模型读书笔记:Data语意学-继承与Data member中内存对齐问题

标签:bit   har   ace   public   8 8   继承   读书   style   编译器   

原文地址:http://www.cnblogs.com/lthb/p/6640982.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!