歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++ 中 const 常量函數 static 變量 整理

C++ 中 const 常量函數 static 變量 整理

日期:2017/3/1 9:41:39   编辑:Linux編程

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個章節中:

  1. Linux-C成長之路(一):Linux下C編程概要 http://www.linuxidc.com/Linux/2014-05/101242.htm
  2. Linux-C成長之路(二):基本數據類型 http://www.linuxidc.com/Linux/2014-05/101242p2.htm
  3. Linux-C成長之路(三):基本IO函數操作 http://www.linuxidc.com/Linux/2014-05/101242p3.htm
  4. Linux-C成長之路(四):運算符 http://www.linuxidc.com/Linux/2014-05/101242p4.htm
  5. Linux-C成長之路(五):控制流 http://www.linuxidc.com/Linux/2014-05/101242p5.htm
  6. Linux-C成長之路(六):函數要義 http://www.linuxidc.com/Linux/2014-05/101242p6.htm
  7. Linux-C成長之路(七):數組與指針 http://www.linuxidc.com/Linux/2014-05/101242p7.htm
  8. Linux-C成長之路(八):存儲類,動態內存 http://www.linuxidc.com/Linux/2014-05/101242p8.htm
  9. Linux-C成長之路(九):復合數據類型 http://www.linuxidc.com/Linux/2014-05/101242p9.htm
  10. Linux-C成長之路(十):其他高級議題

Copyright © Linux教程網 All Rights Reserved