如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的名字进行访问时,可能产生二义性
总结:
- 如果一个派生类从多个基类派生,而这些基类又有一个共同
的基类,则在对该基类中声明的名字进行访问时,可能产生
二义性
- 如果在多条继承路径上有一个公共的基类,那么在继承路径的某处
汇合点,这个公共基类就会在派生类的对象中产生多个基类子对象
- 要使这个公共基类在派生类中只产生一个子对象,必须对这个基类
声明为虚继承,使这个基类成为虚基类。
- 虚继承声明使用关键字 virtual
#include <iostream> using namespace std; class B { public: int b; protected: private: }; class B1 : virtual public B { public: int b1; }; class B2 : virtual public B { public: int b2; }; class C : public B1, public B2 { public: int c; }; void main() { C c1; c1.b1 = 100; c1.b2 = 200; c1.c = 300; c1.b = 500; //继承的二义性 和 虚继承解决方案 //c1.B1::b = 500; //c1.B2::b = 500; cout<<"hello..."<<endl; system("pause"); return ; }