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 */


C++ 虚继承


2、基类为虚继承,则不会出现错误

class CFarmer:virtual public CPerson

{

    

};


class CWorker:virtual public CPerson

{

    

};


注:
1、CPerson是CFarmer、CWorker的虚基类,不加virtual则是非虚基类
2、少用多继承,多继承会使程序变得发复杂,增加维护的成本