国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ const用法 盡可能使用const

2019-11-06 08:14:51
字體:
來源:轉載
供稿:網友

C++ const用法 盡可能使用const

  C++ const 允許指定一個語義約束,編譯器會強制實施這個約束,允許程序員告訴編譯器某值是保持不變的。如果在編程中確實有某個值保持不變,就應該明確使用const,這樣可以獲得編譯器的幫助。

1.const 修飾成員變量 

復制代碼
 1 #include<iostream> 2 using namespace std; 3 int main(){ 4     int a1=3;   ///non-const data 5     const int a2=a1;    ///const data 6  7     int * a3 = &a1;   ///non-const data,non-const pointer 8     const int * a4 = &a1;   ///const data,non-const pointer 9     int * const a5 = &a1;   ///non-const data,const pointer10     int const * const a6 = &a1;   ///const data,const pointer11     const int * const a7 = &a1;   ///const data,const pointer12 13     return 0;14 }復制代碼

const修飾指針變量時:

  (1)只有一個const,如果const位于*左側,表示指針所指數據是常量,不能通過解引用修改該數據;指針本身是變量,可以指向其他的內存單元。

  (2)只有一個const,如果const位于*右側,表示指針本身是常量,不能指向其他內存地址;指針所指的數據可以通過解引用修改。

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

2.const修飾函數參數

  傳遞過來的參數在函數內不可以改變,與上面修飾變量時的性質一樣。

void testModifyConst(const int _x) {     _x=5;   ///編譯出錯}

3.const修飾成員函數

(1)const修飾的成員函數不能修改任何的成員變量(mutable修飾的變量除外)

(2)const成員函數不能調用非onst成員函數,因為非const成員函數可以會修改成員變量

復制代碼
 1 #include <iostream> 2 using namespace std; 3 class Point{ 4     public : 5     Point(int _x):x(_x){} 6  7     void testConstFunction(int _x) const{ 8  9         ///錯誤,在const成員函數中,不能修改任何類成員變量10         x=_x;11 12         ///錯誤,const成員函數不能調用非onst成員函數,因為非const成員函數可以會修改成員變量13         modify_x(_x);14     }15 16     void modify_x(int _x){17         x=_x;18     }19 20     int x;21 };復制代碼

 4.const修飾函數返回值

(1)指針傳遞

如果返回const data,non-const pointer,返回值也必須賦給const data,non-const pointer。因為指針指向的數據是常量不能修改。

復制代碼
 1 const int * mallocA(){  ///const data,non-const pointer 2     int *a=new int(2); 3     return a; 4 } 5  6 int main() 7 { 8     const int *a = mallocA(); 9     ///int *b = mallocA();  ///編譯錯誤10     return 0;11 }復制代碼

(2)值傳遞

 如果函數返回值采用“值傳遞方式”,由于函數會把返回值復制到外部臨時的存儲單元中,加const 修飾沒有任何價值。所以,對于值傳遞來說,加const沒有太多意義。

所以:

  不要把函數int GetInt(void) 寫成const int GetInt(void)。  不要把函數A GetA(void) 寫成const A GetA(void),其中A 為用戶自定義的數據類型。

 

  在編程中要盡可能多的使用const,這樣可以獲得編譯器的幫助,以便寫出健壯性的代碼。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 保定市| 方山县| 尼木县| 额敏县| 贡觉县| 连云港市| 横山县| 台北县| 金沙县| 葵青区| 鄂温| 临清市| 泰和县| 恩施市| 太仓市| 嘉黎县| 临漳县| 呼伦贝尔市| 巫山县| 石台县| 东辽县| 吉安县| 高邑县| 木兰县| 科尔| 庄浪县| 大渡口区| 大同市| 浦江县| 普洱| 桂东县| 蛟河市| 龙陵县| 义马市| 扎鲁特旗| 三江| 扬州市| 清河县| 建宁县| 贺州市| 砚山县|