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
将是多余的。