常量方法中的奇怪行为,其中变量可以修改
Strange behaviour in constant method where variable can be modified
我正在使用gcc编译器来编写以下代码:
base operator +( base& b)const
{
int i=12; // local variable
i++; // works fine
base temp;
b=temp; // works fine
temp.x=x+b.x;
return(temp);
}
我得到了常量函数的奇怪行为。我只能修改局部变量和参数。由于该方法是一个常量,我想知道函数体内部如何进行任何修改?
有人请解释这种行为。提前谢谢。
你问:
由于该方法是一个常量,函数体内部如何进行任何修改?
当成员函数是const
成员函数时,不能修改调用该函数的对象。您可以修改其他可修改的对象。
在您的函数中,您不能这样做:
this->x = x+b.x; // Not allowed.
x = x+b.x; // Not allowed either.
const 成员方法只能修改成员变量
相关文章:
- 如何从子成员函数修改父公共成员变量
- 修改程序的入口点时未调用全局变量的构造函数
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 如何使用gmock模拟修改C++类中私有变量的成员函数
- 有了memory_order_relaxed,原子变量的总修改顺序如何在典型体系结构上得到保证
- 我们如何修改常量变量的值
- 是否可以禁止在for循环体内部修改循环变量
- 使用 QtConcurrent::run() 修改成员变量?
- 在 C++17 中修改 constexpr 函数中的全局变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 如何修改用户指定的变量?
- 打印/修改类对象的特定成员变量,其类定义列表 (STL) 包含的元素类型
- 是否修改其声明语句中的变量定义良好
- 修改和读取原子变量
- 无法修改C 中类的变量
- 使用参考变量修改类私人变量
- 是否可以安全地修改静态变量
- 使用/创建/修改单独.cpp文件中的变量
- 如何跟踪通过外部代码修改类变量的所有位置
- 为什么常量变量是可修改的?