为什么要使用 const 成员函数?

新手上路,请多包涵

我正在尝试了解类 getter 和 setter 函数…

我的问题是:如果我设计一个仅从其类中获取状态的函数(“getter”函数),为什么将其标记为“const 成员函数”?我的意思是,如果我的函数旨在不更改其类的任何属性,为什么还要使用 const 成员函数?我不明白请:(

例如:

 int GetValue() {return a_private_variable;}

int GetValue() const {return a_private_variable;}

真正的区别是什么?

原文由 alfa beta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 401
2 个回答

当您将成员函数声明为 const 时,例如

int GetValue() const;

然后告诉编译器它不会修改对象中的任何内容。

这也意味着您可以在常量对象上调用成员函数。如果您没有 const 修饰符,那么您不能在已定义为 const 的对象上调用它。您仍然可以在非常量对象上调用 const 成员函数。

另请注意, const 修饰符是成员函数签名的一部分,这意味着您可以使用非常量函数重载它。那就是你可以拥有

int GetValue() const;
int GetValue();

在同一个班。

原文由 Some programmer dude 发布,翻译遵循 CC BY-SA 3.0 许可协议

类的 const 实例只能调用 const 函数。

拥有一个类的 const 实例对于使您的程序更稳定很有用,因为您不能意外地修改该实例。

在您的情况下,这些功能的作用完全相同,但不必如此。

原文由 Xavier Imbs 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题