多继承
一、概念
一个类有多个直接基类的继承关系称为多继承,多继承会引入其他问题:
1.祖先类obj中有一个变量a,然后有P1和P2两个类分别都继承obj类,再有C1类多继承P1和P2时,定义的对象使用变量a时,编译不知道引用P1的还是P2的变量a,会编译报错(变量a的二义性),可以使用虚继承解决此问题,
如:class P1:virtual public obj //加上virtual后,c++编译器会给变量偷偷添加属性,这样此类的sizeof()会增加4个字节;
2.如果P1和P2类同时含有同名的成员,多继承P1和P2时,则不能通过虚继承来解决,使用同名变量需要作用域分析符来区分,否则编译报错;
3.添加虚继承后,构造和析构的函数会多调用一遍;