如果我在标题文件中使用关键字的声明,则应该在定义本身中包含相同的关键字

If I have a declaration with keywords in the header file, should I include the same keywords in the definition itself?

本文关键字:关键字 定义 包含相 文件 声明 如果 标题      更新时间:2023-10-16

我是C 的新手,尽管具有少量的编程体验,并且想知道是否在定义中包括关键字有任何全局共识。

例如(例如,不是有效的语句):

class Dog : Animal {
    void foo() const override final foo bar ... keywords;
}

通常建议(为了清楚起见)在定义中执行相同的操作,还是我应该放弃它们?

Dog::foo() const override final foo bar ... keywords {
    //
}

如果在声明中包含在定义中必须包含任何关键字?

答案取决于特定的关键字。

正如讲故事的人在注释中所指出的那样,const IS 函数签名的一部分。使用const的声明和一份声明没有声明的声明(并且超载分辨率将确定在给定表达式中将使用哪个声明)。volatile也是如此。因此,您将必须在定义中也使用它,以便可以匹配声明和定义。

virtual 不得在成员定义中使用,并且同样适用于overridefinal。这些关键字不影响功能签名。

因此,由于它不是主观的,因此无需共识。这两个规则有两个艰难的规则,也有一个原因。