我正在尝试了解类 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 许可协议
当您将成员函数声明为
const
时,例如然后告诉编译器它不会修改对象中的任何内容。
这也意味着您可以在常量对象上调用成员函数。如果您没有
const
修饰符,那么您不能在已定义为const
的对象上调用它。您仍然可以在非常量对象上调用const
成员函数。另请注意,
const
修饰符是成员函数签名的一部分,这意味着您可以使用非常量函数重载它。那就是你可以拥有在同一个班。