const 只對其左邊起作用,如果左邊沒數據 則對右邊起作用
如:const int * p; //修飾int 指向的數不能修改(即:不能 *p = 3形式),但指針可以修改
int const * p 同const int *p ;
int * const p 修飾* 是常量指針 指針不能修改(即:不能 int a ,p= &a )但其指向變量可以修改(可以*p = 3))
常成員函數聲明:<類型標志符>函數名(參數表)const;
說明:
(1)const是函數類型的一部分,在實現部分也要帶該關鍵字。
(2)const關鍵字可以用於對重載函數的區分。
(3)常成員函數不能更新類的成員變量,也不能調用該類中沒有用const修飾的成員函數,只能調用常成員函數。
1、const成員:只能在構造函數後的初始化列表中初始化
2、static成員:初始化在類外,且不加static修飾
3、const static成員:類只有唯一一份拷貝,且數值不能改變。因此,可以在類中聲明處初始化,也可以像static在類外初始化
4.const 對象只能調用const成員函數
.在類中允許存在同名的常量函數和非常量函數,編譯器根據調用該函數的對象選擇合適的函數
當非常量對象調用該函數時,先調用非常量函數;
當常量對象調用該函數時,只能調用常量函數;
如果在類中只有常量函數而沒有與其同名的非常量函數,則非常量與常量對象都可調用該常量函數;
常量引用返回值
如果你想從常量方法(函數)中通過引用返回this對象的一個成員,你應該使用常量引用來返回它,即const X&
陷阱:有一種例外,常量成員函數可以改變靜態數據成員;另外,如果使用關鍵字mutable修飾數據成員,那麼甚至常量數據成員也可以修改它。不過別擔心這種例外情況。
對於X類型的非常量成員函數而言,其this指針的類型是X * const,該指針自身是常量;但是對於X類型的常量成員函數而言,其this指針的類型是const X * const,是一個常量指針。
C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm
讀C++ Primer 之構造函數陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm
讀C++ Primer 之智能指針 http://www.linuxidc.com/Linux/2011-08/40177.htm
讀C++ Primer 之句柄類 http://www.linuxidc.com/Linux/2011-08/40175.htm
將C語言梳理一下,分布在以下10個章節中: