当我重载一个虚函数时:
class Geoff
{
public:
virtual int getArea() { return 0; }
}
当我重写一个函数时,是否需要再次指定为“virtual”关键字?这样做有什么不同吗?我知道这两种方式似乎都可以正常工作,只是想知道其中是否还有其他的区别。
class George : public Geoff
{
public:
virtual int getArea() { return x*y; }
}
当我重载一个虚函数时:
class Geoff
{
public:
virtual int getArea() { return 0; }
}
当我重写一个函数时,是否需要再次指定为“virtual”关键字?这样做有什么不同吗?我知道这两种方式似乎都可以正常工作,只是想知道其中是否还有其他的区别。
class George : public Geoff
{
public:
virtual int getArea() { return x*y; }
}
override
而不是virtual来重载虚函数,因为它既可以说明你正在重载一个虚函数,又可以检查是否存在可重载的基本匹配虚函数。int getArea() override { return x*y; }
在C++03中,这是一个风格选择 - 如果你觉得它增加了文档价值,就把virtual
放在里面。virtual
放置其中。final
来防止进一步的覆盖,这使得编译器更容易地将调用该成员函数的虚拟化。 - Jon Purdy