谢谢两位。
在下后来又仔细google了与C++多重继承相关的帖子,发现菱形问题的实质是:A是基类,定义了一个变量a, B和C都是A的子类,并分别继承了一个变量a。类D则既是B又是C的子类。问题是:D搞不清楚变量a应该是继承B从A继承的a还是继承C从A继承的a,因为现在有了两份a的copy: 一份是B从A继承的,而另一份是C从A继承的。
靠!
这实在是C++的发明者们发浑蛋,自己把自己搞晕了:为什么不按照变量a的原生类,只设定一份a呢?那样,不管是从B还是从C继承的a,其实都是同一份由A类原生的变量a。这样一来,不管再怎么乱伦,我们永远只承认那一份从原生类中的定义的变量不就得了吗?
也许鄙人理解有误,问题不是那么简单。敬请各位高手继续指点迷津。
另外,言辞中如有对C++众位祖师爷有冒犯之处,敬请各位C++粉丝们原谅。