018--C++养成之路(多继承:菱形继承,虚继承)

    科技2022-07-11  99

    笔记:问题菱形继承,解决方法虚继承

    菱形继承:

    #include <iostream> using namespace std; class A{ public: A(){ cout<<"A构造···"<<endl; } int m_temp; }; class B:public A{ public: B(){ cout<<"B构造···"<<endl; } }; class C:public A{ public: C(){ cout<<"C构造···"<<endl; } }; class T:public B,public C{ public: T(){ cout<<"T构造···"<<endl; } }; int main(){ T t; //t.m_temp=1; t.B::m_temp=2; return 0; }

    虚函数继承:

    #include <iostream> using namespace std; class A{ public: A(){ cout<<"A构造···"<<endl; } int m_temp; }; class B:virtual public A{//关键字virtual的使用 public: B(){ cout<<"B构造···"<<endl; } }; class C:virtual public A{ public: C(){ cout<<"C构造···"<<endl; } }; class T:public B,public C{ public: T(){ cout<<"T构造···"<<endl; } }; int main(){ T t; //t.m_temp=1; t.m_temp=2; return 0; }

     

    Processed: 0.029, SQL: 8