首页 > 其他分享 >菱形继承与虚基类

菱形继承与虚基类

时间:2024-03-31 17:23:47浏览次数:26  
标签:Sheep 继承 菱形 Animal 基类 public

菱形继承会存在多份数据的问题,使用虚继承解决问题

虚基类指针vbptr

#include <iostream>

class Animal{
    public :
    int m_Age;
};

class Sheep:virtual public Animal{
    public:
    Sheep(){
        std::cout<<"sheep"<<std::endl;
    };
    
};

class Tuo:virtual public Animal{
    public:
    Tuo(){
        std::cout<<"tuo"<<std::endl;
    };
};

class SheepTuo:public Sheep,public Tuo{
    public:
    SheepTuo(){
        std::cout<<"SheepTuo"<<std::endl;
    }
};

void test01(){
    SheepTuo sheeptuo;
    std::cout<<sheeptuo.Sheep::m_Age<<std::endl;
    std::cout<<sheeptuo.m_Age<<std::endl;
}

int main(){
    return 0;
}

  

标签:Sheep,继承,菱形,Animal,基类,public
From: https://www.cnblogs.com/gishuanhuan/p/18106935

相关文章

  • 继承之同名成员的处理
    #include<iostream>classBase{public:Base(){m_A=100;}voidfunc(){std::cout<<"basefunc"<<std::endl;};intm_A;};classSon:publicBase{public:Son(){m_A=200;......
  • WPF中继承ItemsControl子类控件数据模板获取选中属性
    需求场景列表类控件,如ListBox、ListView、DataGrid等。显示的行数据中,部分内容依靠选中时触发控制,例如选中行时行记录复选,部分列内容控制显隐。案例源码以ListView为例。Xaml部分<ListViewItemsSource="{BindingMyPropertys}"IsManipulationEnabled="False"><List......
  • C++类继承基础5——继承中的类作用域
    继承中的类作用域每个类定义自己的作用域,在这个作用域内我们定义类的成员。当存在继承关系时,派生类的作用域嵌套在其基类的作用域之内。如果一个名字在派生类的作用城内无法正确解析,则编译器将继续在外层的基类作用域中寻找该名字的定义。派生类的作用域位于基类作用域之内......
  • 继承特点、访问特点、方法重写1
    1.继承的特点:①子类可以继承父类的属性和行为,但是子类不能继承父类的构造器;  //子类有自己的构造器,父类构造器用于初始化父类的对象②java是单继承模式,一个类只能继承一个直接父亲;③java不支持多继承、但是支持多层继承;④java所有的的类都是Object的子类;//Java中的所......
  • 深入解析Java继承机制:面向对象编程的核心探究【Java面试题】
    作为一名对技术充满热情的学习者,我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代,我远非专家,而是一位不断追求进步的旅行者。通过这篇博客,我想分享我在某个领域的学习经验,与大家共同探讨、共同成长。请大家以开放的心态阅读,相信你们也会在这段知识之......
  • C++继承详解
    文章目录前言一、继承的概念二、基类和派生类对象赋值转换三、继承中的作用域,隐藏四、菱形继承,菱形虚拟继承五、子类的默认成员函数六.继承和组合总结前言在本篇文章中我们将会学到有关继承方面的知识,其中C++中三大特性分别为:封装,继承多态。由此可见继承在学习中的......
  • C++继承、多态代码备忘录
    HelloWorld#include<iostream>//Basedon64-bitmachines.//1.SizeofABCis16bytes,8bytesforvptr,1byteforchara,7bytes//padding.//2.ThevptrpointtothevtableofABC,thevtablecontainstheaddressof//thevirtualfunct......
  • Java:实验三类的继承与派生
    第1关:什么是封装,如何使用封装编程要求根据提示,在右侧编辑器补充代码。定义一个Person类,包含姓名(name)、性别(sex)、年龄(age)等字段;定义一个Teacher类继承Person类,增加职称(pro)、部门(department)等字段;定义一个Student类继承Person类,增加学号(no)、入学时间(enter)、专业(major)等字段;定......
  • odoo 继承(owl继承、web继承、view继承)
    owl继承1/**@odoo-module*/23import{AbstractAwaitablePopup}from"@point_of_sale/app/popup/abstract_awaitable_popup";4import{_t}from"@web/core/l10n/translation";5import{onMounted,useRef,useState,onWillDe......
  • FLASK学习记录-宏、模板继承
    宏{%macroname%}{%endmacro%}app.pyfromflaskimportFlask,render_templateapp=Flask(__name__)@app.route('/')defindex1():returnrender_template("macro1.html")@app.route("/")defindex2():returnrend......