C++的三大特性:封装,继承,多态。继承的目的是就是为了代码重用,避免的重复代码的编写。继承分为单继承和多继承,单继承就是每次继承的基类只能有一个,属于一对一的关系;多继承则是子类可以同时继承自多个基类,拥有多个基类的特性,属于一对多的关系!
虚继承的定义
在多继承中派生类不能多次直接继承同一个基类,但是派生类的直接基类可能派生自同一个基类。例如:定义一个雇员类Employee作为顶层基类;另外定义一个管理人员类Manager和一个销售人员类Salesman作为Employee类的直接派生类 。再用Manager类和Salesman类共同派生出销售经理类SalesManager。
在由Employee派生出的Manager类的对象中,存在Employee类的子对象;同时Salesman也有一个Employee类的子对象。这样在最终的SalesManager中就存在两份Employee对象的拷贝。这样对SalesManager操作时就很容易产生二义性,如:
SalesManager wang;
wang.setName("王某");
此时编译时,编