[C++] const成员函数与返回值是指针
当一个成员函数被声明为 const 时,这意味着这个函数不能修改类的任何成员变量(除非这些成员变量被声明为 mutable)。例如:
class MyClass {
public:
int value;
void print() const {
// value = 10; // 错误:不能修改成员变量
std::cout << value << std::endl;
}
};
在这个例子中,print 是一个 const 成员函数,它不能修改 value。
const 成员函数返回 const 指针
当一个成员函数被声明为 const 时,它承诺不会修改任何成员变量。因此,它不能返回一个可以修改成员变量的指针。
所以当在一个const成员函数中,返回值为指针时,返回值也需要是const
例如:
class MyClass {
public:
int value;
int* getPointer() const { // 错误:不能返回非 const 指针
return &value;
}
};
这个代码会报错,因为 getPointer 是一个 const 成员函数,它不能返回一个可以修改 value 的指针。
应该为
class MyClass {
public:
int value;
const int* getPointer() const { // 错误:不能返回非 const 指针
return &value;
}
};

浙公网安备 33010602011771号