虚继承
虚继承是为了解决多继承时出现的问题:命名冲突和数据冗余问题
命名冲突:
我们不知道Derive里面的num是从Base2里继承的还是Base3里继承的
数据冗余:
实际上这个num保存了两份
解决菱形继承问题
最直接的方式就是在使用变量时用 类名::变量或方法名 来区分
虚继承
1 | |
存在命名冲突的成员变量在派生类中只保留一份,即间接基类中的成员在派生类中只保留一份
在菱形继承关系中,间接基类称为虚基类,直接基类和间接基类之间的继承关系称为虚继承 图中1,2
虚继承是为了解决多继承时出现的问题:命名冲突和数据冗余问题
命名冲突:
我们不知道Derive里面的num是从Base2里继承的还是Base3里继承的
数据冗余:
实际上这个num保存了两份
最直接的方式就是在使用变量时用 类名::变量或方法名 来区分
虚继承
1 | |
存在命名冲突的成员变量在派生类中只保留一份,即间接基类中的成员在派生类中只保留一份
在菱形继承关系中,间接基类称为虚基类,直接基类和间接基类之间的继承关系称为虚继承 图中1,2