gpt4 book ai didi

c++ - 为什么要将 final 添加到 final 类的成员函数中?

转载 作者:行者123 更新时间:2023-11-30 03:15:55 28 4
gpt4 key购买 nike

考虑以下代码:

#include <iostream>

class B {
virtual void f() {
std::cout << "Base" << '\n';
}
};

class D final: public Base {
void f() final override {
std::cout << "Derived" << '\n';
}
};

注意 final 的两个用途上面的上下文关键字——自 C++11 起可用——我们可以观察到以下内容:

  • final 添加到 D 的成员函数 f() 防止 f() 在派生自 D 的类中被覆盖
  • final 添加到类 D 可以防止它进一步派生

因此,成员函数 f() 不可能被派生自 D 的类覆盖,因为这样的派生类不可能存在,因为final 应用于类 D

final 用作声明为 final 的类的 virtual 成员函数的覆盖控制有什么意义吗?或者它只是多余的?

最佳答案

final 派生类中的 virtual 函数的

final 是多余的。

就像在标记为override 的方法上说virtual 一样是多余的。 C++ 有时就是这样。

关于c++ - 为什么要将 final 添加到 final 类的成员函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674679/

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