首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++用法/技巧中的虚拟继承

C++用法/技巧中的虚拟继承
EN

Stack Overflow用户
提问于 2009-03-18 01:23:59
回答 5查看 5.5K关注 0票数 2

我从来没有在专业软件中使用过它,即使在我们的商店和我工作过的其他公司,我们设计大规模的系统。我唯一一次搞虚拟遗产是在一家公司面试的时候。尽管如此,我还是在下班时间玩了它。

你们用它吗?您是否深入了解它的工作原理(大多数流行的编译器供应商是如何实现它的)?我真的很想知道它是如何在专业软件中使用的。技巧和小贴士也会很受欢迎。

对我来说,虚拟继承只是一个臭名昭著的钻石问题的解决方案。因此,它从来没有在我们的软件中找到它的方式,因为我们在我们的架构中没有导致菱形的MI。

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-18 01:33:18

虚拟继承的要点是防止派生类继承不同上级类的多个副本。在可能存在多个继承的任何情况下都可能发生这种情况--正如您正确地注意到的“菱形问题”,即继承图是DAG而不是严格树。

C++ FAQ goes into it in some detail。我也推荐C++常见问题书;我曾经为作者工作过,他们相当不错。

票数 6
EN

Stack Overflow用户

发布于 2009-03-18 07:58:32

我从来没有在专业软件中使用过它,即使在我们的商店里也是如此。

你使用iostream吗?我们有。查看iostream的设计,你就会知道你一直在使用虚拟继承。

票数 5
EN

Stack Overflow用户

发布于 2009-03-18 02:05:04

如果你的架构不使用多重继承,我不明白你为什么要使用它。

如果你碰巧使用了MI,我不明白你为什么不使用虚拟继承。除了记得在正确的地方添加virutal关键字之外,似乎没有任何缺点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/656651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档