尽管函数定义为常量,但为什么值会改变?

时间:2019-04-10 03:56:48

标签: c++

我使用静态分配测试了程序,更改了值后,编译器给我一个错误。

但是当我使用动态分配时,值发生了变化。

class Test{

private:
    int *value;

public:

    Test( int v ){
        value = new int;
        *value = v;
    }

    int getValue() const{
        *value = 110;
        return *value;
    }

    ~Test(){
        delete value;
    }

};
int main(){
    Test t1(7);
    cout<<t1.getValue()<<endl;
}

2 个答案:

答案 0 :(得分:1)

简而言之,您修改指向值和const关键字仅保证成员变量(在这种情况下为int的 pointer )不会更改。如果尝试重新分配指向value = 110的指针,则会遇到问题,因为将要修改成员变量。

如果您想更深入地了解此内容,请在此进行更深入的说明:https://stackoverflow.com/a/6853421/882338

答案 1 :(得分:1)

这是因为指针成员变量在您的情况下变为const,而不是它指向的内存。您将无法在此const成员函数中重新分配指针。