我使用静态分配测试了程序,更改了值后,编译器给我一个错误。
但是当我使用动态分配时,值发生了变化。
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;
}
答案 0 :(得分:1)
简而言之,您修改指向值和const关键字仅保证成员变量(在这种情况下为int的 pointer )不会更改。如果尝试重新分配指向value = 110
的指针,则会遇到问题,因为将要修改成员变量。
如果您想更深入地了解此内容,请在此进行更深入的说明:https://stackoverflow.com/a/6853421/882338
答案 1 :(得分:1)
这是因为指针成员变量在您的情况下变为const,而不是它指向的内存。您将无法在此const成员函数中重新分配指针。