gpt4 book ai didi

c++ - 在子类中重写时我应该重用虚拟吗?

转载 作者:太空狗 更新时间:2023-10-29 20:53:01 25 4
gpt4 key购买 nike

我知道我不需要在子类中将覆盖函数声明为 virtual。但是,如果我在子类中使用虚函数,是否需要将子类函数声明为 virtual

struct Base
{
virtual int foo();
};

struct Derived : Base
{
virtual int foo() override
{
// ...
}
};

struct DoubleDerived : Derived
{
int foo() override
{
// ...
}
};

最佳答案

你不必,反正这个函数是虚拟的,但它无疑使它变得清晰。以前(在 override 可用之前)您可以覆盖某些函数,然后如果在基类中更改了该函数,您的派生类将不会再覆盖它并且代码将编译而不会出现任何问题。您在派生类中的函数不会覆盖任何东西,并且会变成非虚拟的。

override编译器会防止这种错误,如果基数改变,函数就不会神奇地变成非虚拟的。换句话说,如果 overridefinal被使用,暗示函数是virtual ,否则会编译错误。

关于c++ - 在子类中重写时我应该重用虚拟吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44103547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com