C++ 虚继承
一句话总结:虚继承的出现时为了解决多重继承中基类的多义性。
1、多重继承,基类为非虚继承
#ifndef CvirtualExtends_hpp
#define CvirtualExtends_hpp
class CPerson
{
public:
int age;
int tall;
};
class CFarmer:public CPerson
{
};
class CWorker:public CPerson
{
};
class CFarmerWorker:public CFarmer, public CWorker
{
};
#endif /* CvirtualExtends_hpp */
2、基类为虚继承,则不会出现错误
class CFarmer:virtual public CPerson
{
};
class CWorker:virtual public CPerson
{
};
注:
1、CPerson是CFarmer、CWorker的虚基类,不加virtual则是非虚基类
2、少用多继承,多继承会使程序变得发复杂,增加维护的成本