【发布时间】:2018-12-10 10:40:34
【问题描述】:
使用有没有优势:
struct Base
{
virtual void foobar();
};
struct Derived : public Base
{
virtual void foobar() override;
};
代替:
struct Base
{
void foobar();
};
struct Derived : public Base
{
void foobar();
};
什么时候不需要动态/运行时多态?如果有,为什么?
谢谢。
【问题讨论】:
-
"如果不需要动态多态?" 那你为什么需要它呢?我的意思是这就是重点
-
如果你不需要动态多态,那你应该继承吗?也许构图更好。
-
如果您不需要它,请不要这样做。见stackoverflow.com/questions/292124/…。
-
您只会承受 vtable 和虚拟调用的开销,而不会从中获得任何好处...@MatthieuBrucher 您听起来好像继承应该只与动态多态一起使用...
-
在这种情况下,您可能不想强制执行动态声明。为什么继承然后隐藏基函数?为什么不只拥有两个不同的、不相关的类?
标签: c++