菱形继承与虚基类

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

虚基类指针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;
}

  

posted @ 2024-03-31 17:11  FigureOut  阅读(1)  评论(0编辑  收藏  举报