常量方法中的奇怪行为,其中变量可以修改

Strange behaviour in constant method where variable can be modified

本文关键字:变量 修改 方法 常量      更新时间:2023-10-16

我正在使用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 成员方法只能修改成员变量