Const 成員函式
類的成員函式可以宣告為 const
,它告訴編譯器和將來的讀者這個函式不會修改物件:
class MyClass
{
private:
int myInt_;
public:
int myInt() const { return myInt_; }
void setMyInt(int myInt) { myInt_ = myInt; }
};
在 const
成員函式中,this
指標實際上是 const MyClass *
而不是 MyClass *
。這意味著你無法更改函式內的任何成員變數; 編譯器會發出警告。所以 setMyInt
不能宣告 const
。
在可能的情況下,你幾乎應該始終將成員函式標記為 const
。在 const MyClass
上只能呼叫 const
成員函式。
static
方法不能宣告為 const
。這是因為靜態方法屬於一個類而不是在物件上呼叫; 因此它永遠不能修改物件的內部變數。因此,將 static
方法宣告為 const
將是多餘的。