C 中const關鍵詞總結

2021-06-09 17:05:34 字數 1652 閱讀 5097

下午在調程式時,遇到error: passing 『$class_name

『 as 『this』 argument of 『$class_function『 discards qualifiers的編譯的錯誤,

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

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

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 = ***;是非法的

(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修飾

C 中const關鍵詞總結

下午在調程式時,遇到 error passing class name as this argument of class function discards qualifiers的編譯的錯誤,錯誤的意思是 this指標在作為引數傳入class function時限定符被取消了 google一下,是...

C 中的const關鍵詞用法

cont int i 5 i 8 此處會產生編譯錯誤,因為i被const修飾,因此i的值不能再改變 同樣地,const除了可以修飾基本型別資料外,還可以用來修飾指標和引用,但修飾指標的時候會有常量指標和指標常量之分 const int p 此處是乙個常量指標,從左往右讀,先是常量再是指標。對於對於常...

常量關鍵詞const

可以用const修飾符號常量。const double pi 3.14 const int i和int const i是一樣的 也可以用const限定指標,但是限制指標時有幾個需要注意的地方。1 const修飾的位置 const int i,此時效果等同於int const i 可以這麼看,先把co...