c++ const

c++ 在函數後加const的意義:
   咱們定義的類的成員函數中,經常有一些成員函數不改變類的數據成員,也就是說,這些函數是"只讀"函數,而有一些函數要修改類數據成員的值。若是把不改變數據成員的函數都加上const關鍵字進行標識,顯然,可提升程序的可讀性。其實,它還能提升程序的可靠性,已定義成const的成員函數,一旦企圖修改數據成員的值,則編譯器按錯誤處理。 const成員函數和const對象 實際上,const成員函數還有另一項做用,即常量對象相關。對於內置的數據類型,咱們能夠定義它們的常量,用戶自定義的類也同樣,能夠定義它們的常量對象。html

 

非靜態成員函數後面加const(加到非成員函數或靜態成員後面會產生編譯錯誤),表示成員函數隱含傳入的this指針爲 const指針,決定了在該成員函數中,任意修改它所在的類的成員的操做都是不容許的(由於隱含了對this指針的const引用);惟一的例外是對於 mutable修飾的成員。加了const的成員函數能夠被非const對象和const對象調用,但不加const的成員函數只能被非const對象調 用。例如:
class A
{
private:
int m_a;
public:
A() : m_a(0) {}
int getA() const { return m_a; //同return this->m_a;}
int GetA() { return m_a; }
int setA(int a) const
{
m_a = a; //這裏產生編譯錯誤,若是把前面的成員定義int m_a;改成mutable int m_a;就能夠編譯經過。
}
int SetA(int a)
{ m_a = a; //同this->m_a = a;
}
};
A a1;
const A a2;
int t;
t = a1.getA();
t = a1.GetA();
t = a2.getA();
t = a2.GetA(); //a2是const對象,調用非const成員函數產生編譯錯誤。c++

 

http://www.cnblogs.com/xudong-bupt/p/3509567.html函數

 

 

總結:this

①類的方法後面使用,int hhh const{。。。},即表示該方法不能改變類的數據成員指針

htm

const修飾指針變量時:對象

  (1)只有一個const,若是const位於*左側,表示指針所指數據是常量,不能經過解引用修改該數據;指針自己是變量,能夠指向其餘的內存單元。(在數據類型哪邊都同樣)blog

  (2)只有一個const,若是const位於*右側,表示指針自己是常量,不能指向其餘內存地址;指針所指的數據能夠經過解引用修改。內存

  (3)兩個const,*左右各一個,表示指針和指針所指數據都不能修改。get

相關文章
相關標籤/搜索