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

染成褐色

我试图理解类的getter和setter函数...

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

例如:

int GetValue() {return a_private_variable;}

int GetValue() const {return a_private_variable;}

真正的区别是什么?

一些程序员哥们

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

int GetValue() const;

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

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

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

int GetValue() const;
int GetValue();

在同一个班。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么要使用const(或Readonly)?

为什么const函数可以使用静态成员对象的非const函数?

为什么const成员函数可以修改静态数据成员?

不使用此方法而从const对象调用非const成员函数,为什么会出错?

为什么不需要使用 hton/ntoh 函数来发送 const char*?

为什么要使用 list() 构造函数?

为什么要使用函数原型?

为什么要使用发散函数?

为什么要使用move构造函数?

为什么要使用QUOTENAME函数?

为什么要使用map()函数?

为什么同时需要const引用和const成员函数?

为什么指向非const成员函数的指针不能指向const成员函数而相反呢?

为什么在类成员函数C ++中两次使用关键字“ const”

为什么非成员函数不允许使用类似const的修饰符

我们可以直接将值分配给任何数据成员。为什么要使用构造函数?

为什么要使用const char *形式的字符串

为什么可以通过使用指向对象成员的指针的 const 成员函数来修改对象状态?

为什么不能将此成员函数标记为const?

为什么可以在构造函数中修改const成员?

为什么在const成员struct中需要构造函数?

从具有常量构造函数的类创建对象时,为什么要使用 const 关键字?

如果存在默认的成员初始化,为什么要使用成员初始化列表

为什么要使用继承和多态性而不是函数模板实例来调用具有相同签名的成员函数?

为什么要使用lambda与1行函数声明?

为什么要使用unlist()函数?(内部示例)

Python中的@decorators:为什么要使用内部定义的函数?

为什么还要使用空白的构造函数?

为什么要使用小数(int [])构造函数?