Code Knight

Programming is so cool
随笔 - 52, 文章 - 0, 评论 - 14, 引用 - 0
数据加载中……

[原]《深度探索C++对象模型》读书笔记

1,使用初始化列表初始化参数的顺序不是根据参数列表里声明的顺序,而是根据该成员变量在类中声明的顺序决定的。
et.
class A
{
public:
   A();
   ~A();
private:
   int a;
   byte b;
}

A::A():b(1),a(b)
{

}

a的值无法确定,而b是1

2,在data语义学中
找到了一个一年困扰过我的问题,总算得到解答
class X;
class A:class X;
class B:class X;
class Y:class A, class B;

sizeof(X):1
sizeof(A):8
sizeof(B):8
sizeof(Y):12

编译器对空类会做优化给予一个char的大小
至于A,B 由于有继承关系存在虚函数表,size应为5,在4字节对其的编译器下sizeof为8,当然设定字节对齐为1的话应该是5

posted on 2010-02-23 21:37 Code Knight 阅读(249) 评论(0)  编辑 收藏 引用 所属分类: 读书笔记


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理