我从来没有在专业软件中使用过它,即使在我们的商店和我工作过的其他公司,我们设计大规模的系统。我唯一一次搞虚拟遗产是在一家公司面试的时候。尽管如此,我还是在下班时间玩了它。
你们用它吗?您是否深入了解它的工作原理(大多数流行的编译器供应商是如何实现它的)?我真的很想知道它是如何在专业软件中使用的。技巧和小贴士也会很受欢迎。
对我来说,虚拟继承只是一个臭名昭著的钻石问题的解决方案。因此,它从来没有在我们的软件中找到它的方式,因为我们在我们的架构中没有导致菱形的MI。
谢谢。
发布于 2009-03-18 01:33:18
虚拟继承的要点是防止派生类继承不同上级类的多个副本。在可能存在多个继承的任何情况下都可能发生这种情况--正如您正确地注意到的“菱形问题”,即继承图是DAG而不是严格树。
C++ FAQ goes into it in some detail。我也推荐C++常见问题书;我曾经为作者工作过,他们相当不错。
发布于 2009-03-18 07:58:32
我从来没有在专业软件中使用过它,即使在我们的商店里也是如此。
你使用iostream吗?我们有。查看iostream的设计,你就会知道你一直在使用虚拟继承。
发布于 2009-03-18 02:05:04
如果你的架构不使用多重继承,我不明白你为什么要使用它。
如果你碰巧使用了MI,我不明白你为什么不使用虚拟继承。除了记得在正确的地方添加virutal关键字之外,似乎没有任何缺点。
https://stackoverflow.com/questions/656651
复制相似问题