笔记:问题菱形继承,解决方法虚继承
菱形继承:
#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; }