C++函式名後面有個const

海_纳百川發表於2024-11-08

‌函式名後面加const表示該函式是一個常成員函式,即該函式不會修改類的任何成員變數。‌

在C++中,常成員函式透過在函式宣告和定義後新增const關鍵字來標識。常成員函式不能修改類的任何成員變數,這保證了類的介面的穩定性。例如:

class Point {
public:
int GetX() const; // 常成員函式,不能修改成員變數xVal
int GetY() const; // 常成員函式,不能修改成員變數yVal
private:
int xVal, yVal;
};

在上面的例子中,GetX()GetY()都是常成員函式,因為它們不會修改xValyVal成員變數‌1。

常成員函式的用途和限制

  1. ‌用途‌:常成員函式通常用於獲取類的狀態資訊,而不改變類的狀態。例如,獲取物件的屬性值。
  2. ‌限制‌:常成員函式不能呼叫非const成員函式,因為非const成員函式可能會修改類的成員變數,這與const成員函式的定義相沖突。例如:
    const Point p;
    p.SetPt(1, 2); // 錯誤,SetPt是修改成員變數的非const成員函式
    p.GetX(); // 正確,GetX是常成員函式
    在上面的例子中,嘗試使用const物件呼叫非const成員函式SetPt會導致編譯錯誤,因為SetPt可能會修改物件的成員變數,而p是一個const物件,其成員變數不應被修改‌

相關文章