const 修飾成員函式表示傳入函式內的為 const *this
const 成員函式: (1)、不允許修改成員變數;
(2)、mutable修飾符的成員變數,對於任何情況下通過任何手段都可修改,自然此時的const成員函式是可以修改它的;
(3)、不允許訪問非const函式。
class Demo { public: void print() const; //常成員函式 int get() const; void set(); private: int m_int; mutable int m_mut; }; void Demo::print(/* const Demo *this */) const //相當於傳入了一個const 的this指標 { m_int = 0;//error,(1) set(); //error (2) get(); //ok m_mut = 20;//ok
const物件只能訪問const成員函式,而非const物件可以訪問任意的成員函式,包括const成員函式。
const Demo de; de.set()//error de.print()//ok
//!!!!!
void func(const Demo& de)
{
de.get();//ok
de.set();//error
}
const Vec2& getPosition const;
(1),第一個const表示,返回值引用只讀
(2),第二個const表示,該成員函式內部不會修改成員變數