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

标签 c++ function class constants

我正在尝试理解类 getter 和 setter 函数...

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

例如:

int GetValue() {return a_private_variable;}

int GetValue() const {return a_private_variable;}

真正的区别是什么?

最佳答案

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

int GetValue() const;

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

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

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

int GetValue() const;
int GetValue();

在同一个类(class)。

关于c++ - 为什么要使用 const 成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137928/

相关文章:

c++ - 将派生类作为虚拟基类传递而不丢失更改

c++ - 将 C++ 编译器添加到 Eclipse C 项目

c - 共享相同变量的结构的函数指针

Python:如何确定属性(按名称)是类属性还是实例属性?

javascript - 如果函数有参数则不起作用

c - 错误: control may reach end of non-void function

html - 类与ID-可读性

c++ - if 语句中的复合表达式

C++ 概念,如何检查 constexpr static int 是否等于 1,或类似的...? Clang 不同意 GCC 和 MSVC

c++ - 构造函数的最佳形式?传值还是传引用?