众所周知,我们的 C++ 程序语言是多继承制的,而多继承明显的好处就是,相对而言只需要写较少的代码即可完成一个类的定义,因为我们可以通过继承其它类来获取别人的实现. 但是,它也有一个致命性的缺陷,容易出现「钻石继承结构」,例如: C 和 D 继承自 A,并得到 A 的 name 属性,那么如果有一个类 B 多继承自 C 和 D,请问 D 该如何取舍这两个相同的属性字段? 一般这种情况下,编译器会提示错误,以警示程序员修改代码.当然,C++ 通过 virtual 关键字以虚拟继承的方式解决了这个问…