我从this entry中看到,虚拟继承将sizeof(指针)添加到对象的内存占用中。除此之外,我只在默认情况下使用虚拟继承,只有在需要时才使用常规继承,这有什么缺点吗?这似乎会导致更多面向未来的类设计,但也许我遗漏了一些陷阱。
发布于 2010-12-28 12:02:06
缺点是
static_cast
的任何地方使用更昂贵的dynamic_cast
(问题可能是也可能不是,这取决于您的系统以及您的设计是否需要它)。单单第一点就不值得,因为你不能隐藏你的虚拟基础。几乎总是有更好的方法。
发布于 2010-12-28 11:53:09
根据我的经验,几乎从不需要虚拟继承(相对于虚拟方法)。在C++中,它用于寻址"diamond inheritance problem",如果避免多重继承,实际上不会发生这种情况。
我非常确定,除了C++书籍之外,我从未遇到过虚拟继承,它既包括我编写的代码,也包括我维护的million+行系统。
https://stackoverflow.com/questions/4543537
复制相似问题