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