C++中的常量成員函數(shù)(const member function)不能修改對象的狀態(tài),即它們不能修改對象的任何非靜態(tài)成員變量
常量成員函數(shù)可以調(diào)用其他非常量成員函數(shù),但不能通過this指針修改對象的狀態(tài)。如果嘗試這樣做,編譯器將報(bào)錯(cuò)。
以下是一個(gè)簡單的示例:
#include <iostream>
class MyClass {
public:
MyClass(int value) : value_(value) {}
// 非常量成員函數(shù),可以修改對象的狀態(tài)
void setValue(int value) {
value_ = value;
}
// 常量成員函數(shù),不能修改對象的狀態(tài)
int getValue() const {
return value_;
}
private:
int value_;
};
int main() {
MyClass obj(10);
// 調(diào)用非常量成員函數(shù),可以修改對象的狀態(tài)
obj.setValue(20);
std::cout << "Value: " << obj.getValue() << std::endl; // 輸出 "Value: 20"
// 嘗試調(diào)用常量成員函數(shù)來修改對象的狀態(tài),將導(dǎo)致編譯錯(cuò)誤
// obj.getValue() = 30;
return 0;
}
在這個(gè)示例中,getValue()
是一個(gè)常量成員函數(shù),它不能修改對象的狀態(tài)(即不能修改value_
變量)。而setValue()
是一個(gè)非常量成員函數(shù),它可以修改對象的狀態(tài)。