C++学习记录-面向对象-虚继承:解决菱形继承问题
C++学习记录-面向对象-虚继承:解决菱形继承问题
当发生菱形继承时,即有两个子类都是继承自一个基类,再有一个类继承自上述两个子类时,会发生基类的成员被继承多次,不仅浪费存储空间;还存在二义性问题
**示例:**son1和son2都继承自base类,而gson继承自son1和son2:
1 | class base { |
此时对gson的成员进行复制:
1 | gson s; |
会发生:1>D:\Work\C艹练习\练手\Project1\Project1\源.cpp(24,6): error C2385: 对“a”的访问不明确
此时通过查看gson类的结构,看到gson类中有两份base类的成员:

通过虚继承则可以解决上述问题:
1 | class base { |
查看gson类的结构:

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!





