我的C++ (四) - 类的继承和内存布局
2008-07-29 16:58
337 查看
<?XML:NAMESPACE PREFIX = O /> toophy原创, email : toophy@126.com, QQ : 1033683566,工作几年积累的一点经验, 拿来夯实一下 :)
class CA
{
int a;
};
class CB
{
int b;
};
class CL : public CB, public CA
{
int c;
};
以上的类继承, 对CL类说, 他的内存布局是
int b;
int a;
int c;
像我们想的一样, CB是第一个父辈, CA是第二个, CL里面的数据就放在最后.
但是, 改造CA如下:
class CA
{
int a;
virtual void seta( int _a ) { a = _a; }
};
同样继承顺序的CL, 内存中布局是
virtable
int a;
int b;
int c;
CA被提到CB前面, 这样的布局是因为 class 的布局就是 virtualtable 肯定要放在
最前面.
再次改造, 这回是CB, 改造CB如下:
class CB
{
int b;
virtual void setb( int _b ) { b=_b; }
};
同样继承顺序的CL, 内存布局是
virtable ( CB )
int b;
virtalbe ( CA )
int a;
int c;
我们看到 CA 又被压制下来, 因为CB 也有自己的 virtualtable, 而且他还是第一父辈.
相关文章推荐
- C++ 多继承和虚继承的内存布局
- c++中的单继承,多继承(此处着重讲菱形继承)的内存布局模型详解
- C++对象模型:多重继承和虚继承的内存布局
- C++虚继承的实现方式与内存布局
- c++继承中的内存布局
- c++继承中的内存布局(转)
- c++虚继承对象的内存布局
- c++虚继承对象的内存布局(修改版)
- Linux Debugging(四): 使用GDB来理解C++ 对象的内存布局(多重继承,虚继承)
- c++继承中的内存布局
- c++继承中的内存布局
- C++中,类继承的内存布局
- 【c++】深度探索虚继承内存布局
- C++继承中的内存布局
- c++继承中的内存布局(一)
- C++多重继承和虚继承的内存布局
- C++ 多继承和虚继承的内存布局
- c++继承中的内存布局
- C++ 多继承和虚继承的内存布局(转)
- 三十二、C++内存布局,对象大小计算、虚函数虚继承对类内存模型的影响