c++ const 成員函式

weixin_32208747發表於2018-06-20

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表示,該成員函式內部不會修改成員變數

相關文章