程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中const關鍵詞總結

C++中const關鍵詞總結

編輯:C++入門知識

下午在調程序時,遇到 error: passing ‘$class_name‘ as ‘this’ argument of ‘$class_function‘ discards qualifiers的編譯的錯誤,

錯誤的意思是 this指針在作為參數傳入class_function時限定符被取消了

google一下,是這個函數需要用const修飾,而我漏了,因而報了這個編譯錯誤。

 

順便將const關鍵詞在C++中的使用總結一下。

 

const, constant的縮寫,想必大家在第一堂C/C++課程的時候,老師們都是這麼解釋的“const 就是常量的意思,可以避免減少程序中的魔數(magic number)”。其實,這是對const最大的誤解,以至於多年來大家見到const就想到在文件前幾行的定義的常變量。

 

const在C++中的使用歸納為

     const對變量的修飾

     cosnt對指針的修飾

     const對函數的修飾

 

一. const對變量的修飾

      const int MAX_SIZE = 1024;

     這是最常見的用法,大家都沒問題, const在定義的時候需要初始化。

     有兩點需要注意一下:

     a) const變量默認是局部變量,如果需要全局訪問,需要顯示地extern

     b) const int MAX_SIZE = 1024 與 #define MAX_SIZE1024 貌似做了相同的事情,但是是完全不同的兩個同意。

         #define作為宏定義是完全文本替換,而const MAX_SIZE是作為一個變量整體的。

          下面這段代碼可以說得更清楚:

              const int MAX_SIZE = 1 << 10;//    #define MAX_SIZE 1<<10

               cout << MAX_SIZE << std;

 

二. const對指針的修飾

     const int * a = &b;           (1)

     int const * a = &b;           (2)

     int * const a = &b;           (3)

     const int * const a = &b;  (4)

     (1)(2)的含義是相同的,表示指針所指的內存空間不可修改. *a = XXX;是非法的

     (3)表示指針不可修改,a++是非法的;

     (4)表示指針和指針內容都不可修改

    

三. const對函數的修飾

       void fun(const int &r) (1) 與int const相同

       void fun() const          (2)

       const int fun()             (3)

     (1)  函數的參數為const,表示函數不可修改參數的值

     (2)  函數加const後綴, 此時的函數為自定義結構(struct,class)的成員函數,表示該函數成員不可修改class的成員變量

     (3)  函數的返回結果為const

            表示返回的結果不可修改,返回結果只能賦值給const修飾的變量

 

 

幾點經驗:

1)對const變量采用統一的編碼風格能減少一些不必要的錯誤

2)給函數傳參時,盡量使用帶const的引用方式

3)返回結果迫不得已才使用const修飾

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved