深度剖析虚拟继承
来源:互联网 发布:c语言入门pdf下载 编辑:程序博客网 时间:2024/06/10 19:16
虚拟继承函数与普通继承
class Base{public:int _a;};class P :public Base{public:int _b;};class X :virtual public Base{public:int _c;};int main(){//普通继承P p;p._a = 0;p._b = 1;//虚拟继承X x;x._a = 5;x._c = 6;system("pause:");return 0;}
普通继承
虚拟继承
普通继承与虚拟继承的区别:
1.书写形式不同
虚拟继承含关键字virtual。
2.对象模型不同
虚拟继承多了4个字节,这四个字节保存偏移量表格的地址。
偏移表格存放内容:对象相对于自己的偏移量
对象相对于基类成员的偏移量
3.在内存中,普通继承基类部分在前,派生类部分在后;虚拟继承基类部分在后,派生类部分在前。
4.访问方式不同
普通继承函数:直接访问
虚拟继承函数:偏移量表格地址--->偏移量表格---->偏移量---->基类成员
5.构造函数不同
①虚拟继承的派生类合成构造函数,将偏移量表格的地址放在对象的前四个字节;
②Push 1;多了一个参数1,用来区分是否为虚函数。
菱形虚拟继承
class B{public:int _a;};class C1 :virtual public B{public:int _c;};class C2 :virtual public B{public:int _d;};class D :public C1, public C2{private:int _e;};
但是虚拟继承也存在一些缺陷,间接访问,效率低。
阅读全文
0 0
- 深度剖析虚拟继承
- 虚拟继承内存剖析
- 虚拟继承剖析
- 组合式继承深度剖析
- 深度剖析c++菱形继承!
- 虚拟继承和菱形虚拟继承的剖析
- 菱形虚拟继承的深入剖析
- 深度探索之C++多重继承与虚拟继承
- 虚拟继承
- 虚拟继承
- 虚拟继承
- 虚拟继承
- 虚拟继承
- 虚拟继承
- 虚拟继承
- 虚拟继承
- 虚拟继承
- 虚拟继承
- json字符串解析
- Java中的Filter过滤器
- 锤子浏览器icon
- 3 IP:网际协议
- Vuex 是什么?
- 深度剖析虚拟继承
- 解剖标记点检测——Two-Stage Task-Oriented DNN
- Java的四种引用
- 顺序容器(vector、deque、list、forward_list、array 、string)
- 使用servlet过滤器播放amr音频
- Jersey采用模板Freemarker输出
- Python察阅手册(狐狸版)
- 利用gstreamer设计自已的图传 并整合到Qground Control地面站
- linux4