难割难舍中国心2011-03-18 05:04:24

谢谢两位。

在下后来又仔细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++粉丝们原谅。

 

奉旨泡妞2011-03-18 05:28:06
你写中文偶看不懂哦,不过你可以跟偶兄弟奉旨灌水谈涛1下哈
yb453242011-03-18 17:57:15
回复:吁请Largo兄及各位深藏不露的高手继续跟末将探讨C++多重继承的问题,可别就此冷场了啊!
flywhc2011-03-18 19:45:48
多重继承很方便啊,避免模糊的用法就好了
寂寞远行客2011-03-19 05:19:10
对菱形继承关系直接地多重继承是通不过编译的
企鹅肥肥2011-03-20 02:37:42
多重继承带来的风险问题远大于其利益,用接口Interface或抽象abstracut,虚拟virtual的方式更好
企鹅肥肥2011-03-20 02:42:15
C++里面有大量这样的牛角尖,完全没有必要去钻。如果方便就用,千万不值得把自己陷进去
企鹅肥肥2011-03-20 02:43:46
我觉得应该叫多父继承更好些。