gpt4 book ai didi

c++ - 为什么 "override/final"需要放在函数声明符之后?

转载 作者:可可西里 更新时间:2023-11-01 18:10:04 25 4
gpt4 key购买 nike

我一直想知道这个决定,为什么 overridefinal 必须在成员函数声明符之后:

struct Base {
virtual void virtFun();
};
struct Foo: Base {
virtual void virtFun() override;
};

对我来说,用 override/final 代替 virtual 会更合乎逻辑:

struct Base {
virtual void virtFun();
};
struct Foo: Base {
override void virtFun();
};

这背后有什么原因吗?也许与 C++11 之前的兼容性问题?

最佳答案

是因为overridefinal不是 keywords .

相反,它们是特殊的标识符

这意味着您实际上可以使用这些名称声明变量、函数或类型名称(类型别名或类)。

它们只能在非常小的上下文中像成员函数修饰符一样使用,编译器在解析源代码时必须事先知道上下文。将它们放在函数声明之后是消除该上下文的 C++ 语法歧义的一种非常简单的方法。

关于c++ - 为什么 "override/final"需要放在函数声明符之后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085501/

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