尽管函数被定义为常数,为什么值会发生变化? [重复]

问题描述 投票:1回答:2

这个问题在这里已有答案:

我使用静态分配测试了程序,编译器在更改值时给出了错误。

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

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;
}
c++
2个回答
1
投票

简而言之,您正在修改指向的值,而const关键字仅保证成员变量(在本例中为指向int的指针)不会更改。如果您尝试将指针重新分配给value = 110,则会遇到问题,因为您将修改成员变量。

如果您想更深入地了解它,可以对此进行更深入的解释:https://stackoverflow.com/a/6853421/882338


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.