脱机定义成员函数时,哪些限定符必须出现在声明/定义/两者中?

stakx-不再贡献

我几乎可以肯定,这已经被问过了。不幸的是,我的C ++变得如此生锈,以至于我什至都不知道要搜索什么。

是否有一个容易记住的经验法则会告诉我哪个预选赛(inlinevirtualoverrideconstmutable,等)必须出现(a)仅在声明中,(b)只在定义,(三)无论是在脱机定义成员函数时的声明和定义?

例子:

struct Geometry {
    virtual Geometry* clone() const = 0;
};

struct Point2 : public Geometry {
    virtual Point2* clone() const override { … }
};

如果我想定义Point2::clone离线,反复试验会使我相信这将是正确的代码:

struct Point2 : public Geometry {
    virtual Point2* clone() const override;
};

Point2* Point2::clone() const { … }
  • virtualoverride预选赛可能会出现只有在声明。
  • const必须出现在双方的声明和定义。

我不想永远依靠反复试验。但是我想对限定符进行明确说明(即,即使例如基类隐含了限定符,也要重复使用它们)。是否存在一个通用规则,即哪些限定符必须精确地定位在哪里,或者每个规则是否不同?

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

一般规则是,删除限定符时会产生不同的函数重载,该限定符必须同时出现在两个位置。所有其他限定词都保留在声明中。

在两个地方都必须出现的三个限定符是const和两种参考限定符,它们出现在C ++ 11标准中:

void foo() const;
void foo() &;
void foo() &&;

所有其他限定词都保留在声明中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

声明与定义的C ++存储类和限定符规则

来自分类Dev

const限定符已在ctor声明/定义中接受(llvm错误?)

来自分类Dev

正确支持STL中成员函数的volatile限定符

来自分类Dev

用户定义的函数结果未出现在Excel中

来自分类Dev

Scala错误:当代码出现在函数中时,“前向引用扩展了值的定义”

来自分类Dev

const和引用成员函数限定符

来自分类Dev

PSQL:使用 JOIN 函数时出现“必须出现在 GROUP BY 子句中或用于聚合函数中”错误

来自分类Dev

C ++为什么在定义重载和参考函数时每个函数都应有一个参考限定符

来自分类Dev

从更新函数调用时,自定义 SKShapeNode 未出现在场景中

来自分类Dev

此处不允许使用元素:用于IntelliJ中Spring bean定义中的限定符

来自分类Dev

如何自定义哪些项目出现在内置 StockTools 工具栏中?

来自分类Dev

方法定义中的错误“传递 const List<int> 作为此参数丢弃限定符”

来自分类Dev

自定义指令未出现在页面中

来自分类Dev

在C ++中,当模板参数未出现在以下类或函数声明中时,它有什么用?

来自分类Dev

从函数类型中剥离所有限定符

来自分类Dev

从VBA中的子调用函数-限定符错误

来自分类Dev

在Android中为文件夹使用资源限定符时,我是否必须提供所有新资源?

来自分类Dev

如何确定哪些患者出现在R中的两个ID下?

来自分类Dev

自定义UITableViewCell中的UITextFields文本在滚动时出现在其他单元格中

来自分类Dev

自定义UITableViewCell中的UITextFields文本在滚动时出现在其他单元格中

来自分类Dev

复制构造函数错误:对象具有与成员函数不兼容的类型限定符

来自分类Dev

返回类型的脱机定义与声明中的不同

来自分类Dev

::运算符可以出现在与限定名称查找中的范围解析不同的上下文中吗?

来自分类Dev

该对象具有与成员函数C ++不兼容的类型限定符

来自分类Dev

在引用限定符上重载成员函数的用例是什么?

来自分类Dev

对象具有与成员函数不兼容的类型限定符

来自分类Dev

在引用限定符上重载成员函数的用例是什么?

来自分类Dev

该对象具有与成员函数C ++不兼容的类型限定符

来自分类Dev

转发引用,引用限定符和模板成员函数

Related 相关文章

  1. 1

    声明与定义的C ++存储类和限定符规则

  2. 2

    const限定符已在ctor声明/定义中接受(llvm错误?)

  3. 3

    正确支持STL中成员函数的volatile限定符

  4. 4

    用户定义的函数结果未出现在Excel中

  5. 5

    Scala错误:当代码出现在函数中时,“前向引用扩展了值的定义”

  6. 6

    const和引用成员函数限定符

  7. 7

    PSQL:使用 JOIN 函数时出现“必须出现在 GROUP BY 子句中或用于聚合函数中”错误

  8. 8

    C ++为什么在定义重载和参考函数时每个函数都应有一个参考限定符

  9. 9

    从更新函数调用时,自定义 SKShapeNode 未出现在场景中

  10. 10

    此处不允许使用元素:用于IntelliJ中Spring bean定义中的限定符

  11. 11

    如何自定义哪些项目出现在内置 StockTools 工具栏中?

  12. 12

    方法定义中的错误“传递 const List<int> 作为此参数丢弃限定符”

  13. 13

    自定义指令未出现在页面中

  14. 14

    在C ++中,当模板参数未出现在以下类或函数声明中时,它有什么用?

  15. 15

    从函数类型中剥离所有限定符

  16. 16

    从VBA中的子调用函数-限定符错误

  17. 17

    在Android中为文件夹使用资源限定符时,我是否必须提供所有新资源?

  18. 18

    如何确定哪些患者出现在R中的两个ID下?

  19. 19

    自定义UITableViewCell中的UITextFields文本在滚动时出现在其他单元格中

  20. 20

    自定义UITableViewCell中的UITextFields文本在滚动时出现在其他单元格中

  21. 21

    复制构造函数错误:对象具有与成员函数不兼容的类型限定符

  22. 22

    返回类型的脱机定义与声明中的不同

  23. 23

    ::运算符可以出现在与限定名称查找中的范围解析不同的上下文中吗?

  24. 24

    该对象具有与成员函数C ++不兼容的类型限定符

  25. 25

    在引用限定符上重载成员函数的用例是什么?

  26. 26

    对象具有与成员函数不兼容的类型限定符

  27. 27

    在引用限定符上重载成员函数的用例是什么?

  28. 28

    该对象具有与成员函数C ++不兼容的类型限定符

  29. 29

    转发引用,引用限定符和模板成员函数

热门标签

归档