关于C++对象的成员变量的布局问题

来源:互联网 发布:mac exe怎么打开方式 编辑:程序博客网 时间:2024/06/05 02:56

(1)   同一个access section中,较晚出现的members在classobject中有较高的地址,各个members并不一定得连续排列,什么东西可能介于两个members之间?--比如members的边界调整。

 

(2)   C++ Standard允许编译器将多个access section之中的datamembers自由排列,不必在乎它们出现在class声明之中的次序,不过一般都是把一个以上的access  section连锁在一起,依照声明的次序,成为一个连续区块。

 

 

(3)   编译器可能合成一些内部使用的data members,比如vptr,vptr会被放在什么位置?

C++  Standard秉承对于布局所持的放任态度,允许编译器把那些内部产生出来的members自由放在任何位置,可以放在开头或者最后,甚至是程序员声明出来的members之间。(92页)

 

(4)    C++继承模型中,一个derived class object所表现出来的东西,是其自己的members加上其base class members的总和,至于derived class members和base class members的排列次序并未在C++ Starand中强制规定,大部分编译器中,base class总是先出现,但是属于virtual base class的除外,基类后出现

原创粉丝点击