函式名後面加const表示該函式是一個常成員函式,即該函式不會修改類的任何成員變數。
在C++中,常成員函式透過在函式宣告和定義後新增const
關鍵字來標識。常成員函式不能修改類的任何成員變數,這保證了類的介面的穩定性。例如:
class Point {
public:
int GetX() const; // 常成員函式,不能修改成員變數
xVal
int GetY() const; // 常成員函式,不能修改成員變數
yVal
private:
int xVal, yVal;
};
在上面的例子中,GetX()
和GetY()
都是常成員函式,因為它們不會修改xVal
和yVal
成員變數1。
常成員函式的用途和限制
- 用途:常成員函式通常用於獲取類的狀態資訊,而不改變類的狀態。例如,獲取物件的屬性值。
- 限制:常成員函式不能呼叫非const成員函式,因為非const成員函式可能會修改類的成員變數,這與const成員函式的定義相沖突。例如:
const Point p;
p.SetPt(1, 2); // 錯誤,SetPt是修改成員變數的非const成員函式
p.GetX(); // 正確,GetX是常成員函式
SetPt
會導致編譯錯誤,因為SetPt
可能會修改物件的成員變數,而p
是一個const物件,其成員變數不應被修改