精华内容
下载资源
问答
  • 菱形继承

    2021-03-03 12:10:14
    1.菱形继承概念 两个派生类继承同一个基类 又有某个类同时继承两个派生类 这种继承被称为菱形继承,或者钻石继承 菱形继承带来的主要问题是子类继承两份相同的数据,导致资源浪费以及毫无意义 利用虚继承可以...

    1.菱形继承概念

    • 两个派生类继承同一个基类
    • 又有某个类同时继承两个派生类
    • 这种继承被称为菱形继承,或者钻石继承
    • 菱形继承带来的主要问题是子类继承两份相同的数据,导致资源浪费以及毫无意义
    • 利用虚继承可以解决菱形继承问题
    #include<iostream>
    using namespace std;
    #include<string>
    
    //动物类
    class Animal
    {
    public:
    	int m_age;
    };
    //利用虚继承解决菱形继承的问题
    //加virtual变为虚继承,Animal类称为虚基类
    //羊类
    class Sheep :virtual public Animal
    {
    
    };
    //驼类
    class Tuo :virtual public Animal
    {
    
    };
    //羊驼类
    class SheepTuo :public Sheep, public Tuo
    {
    
    };
    void test1()
    {
    	SheepTuo st;
    	st.Sheep::m_age = 18;
    	st.Tuo::m_age = 28;
    	//当菱形继承,两个父类拥有相同数据,需要加以作用于区分
    	cout << "st.Sheep::m_age=" << st.Sheep::m_age << endl; //18
    	cout << "st.Tuo::m_age=" << st.Tuo::m_age << endl; //28
    	cout << "st.m_age=" << st.m_age << endl;
    	//这份数据我们知道 只有一份就可以,菱形继承导致数据有两份,资源浪费
    }
    
    //同名静态成员函数处理
    int main()
    {
    	test1();
    	system("pause");
    	return 0;
    }

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,339
精华内容 935
关键字:

菱形继承