【发布时间】:2017-11-15 08:10:21
【问题描述】:
考虑以下代码:
struct virtualfoo
{
virtualfoo{};
virtual ~virtualfoo{};
virtual double doStuff() = 0
};
struct realbar : virtualfoo
{
realbar{};
virtual ~realbar{};
virtual double doStuff();
};
由于我想为realbar 实现doStuff(),因此虚拟不是强制性的。但是如果我做对了,在realbar::doStuff() 旁边放置虚拟说明符不会有什么坏处,不是吗?
使用/不使用 virtual 会有什么副作用?
【问题讨论】:
-
您缺少
doStuff()的返回类型——但是在派生类中拥有/不拥有virtual关键字没有副作用。通常,我觉得将其包含在内会很清楚。此外,如果您在派生类中使用override关键字,如果您更改基类而不是派生类,则会出现编译器错误,这会很有帮助:virtual void doStuff() override(在realbar类定义中) -
编辑:改变了返回类型 ;) ty
标签: c++ class inheritance virtual