C primer學習之const限定符 2

2021-07-27 09:21:59 字數 1232 閱讀 7488

上節說了const限定符在定義乙個變數方面的應用,這乙個我們來看看const限定符在函式裡面的應用。

const形參與實參

按照我們前面的定義:

const

int ci =42; //我們不能改變的值

void fun(const

int i);

void fun(int i); /*錯誤,c++中不允許有兩個同樣的函式存在*/

在我們呼叫fun時,既可以傳入const int,也可以傳入i。c++中,我們允許定義若干相同名字的函式,不過前提是不同函式的形參列表應該用明顯的區別。而在上述**中傳入兩個fun函式的引數可以完全一樣,因此第二個fun是錯的。

盡量使用常量引用

常量引用是指對乙個常量的引用,把函式不會改變的形參定義成(普通的)引用是一種比較常見的錯誤,這種做法會給呼叫者乙個極大的誤導,認為函式可以修改它的實參的值。還有,使用引用而非常量引用也會極大地限制函式所能接受的實參型別,例如,我們不能把const物件,字面值或者需要型別轉換的物件傳遞給普通的引用形參:

string size_type find_char(string &s,char c,string occurs);

find_char("hello world",『o』,ctr);

const成員函式

在這裡我們引入了類和this指標的概念,我們先來定義個乙個類和它的乙個const成員函式:

struct sales_data;

}

當我們呼叫isbn(),成員函式通過乙個名為this的額外隱式引數來訪問呼叫它的那個物件:

string isbn() const;
函式之後的const限定符就是為了修改隱式this指標的型別。預設情況下,this型別是指向類型別非常量版本的常量指標。例如在sales_data的成員函式中,this的型別是sales_data *const,此時,緊跟在引數列表後面的const表示this是乙個指向常量的指標,像這樣使用const的成員函式被稱作常量成員函式。

因為this是指向常量的指標,所以常量成員函式不能改變呼叫它的物件的內容。上例中,isbn可以讀取呼叫它的物件的資料成員,但是不能寫入新值。

C primer學習 const 總結

春節比較空閒,重新學習c 使用課本 c primer。學習到90頁,看到書中對const的解釋,於是在這裡對const總結了一下,發現原來有這麼多的注意事項 1.在c語言中const修飾的是全域性的唯讀變數 在c 中,const修飾的是不具有外部鏈結的常量,若要在其他檔案中使用,必須宣告為exter...

重溫C primer 之const總結

1.const變數,即常變數 變數值保持不變,不能被修改 a.const變數預設時是定義該變數的檔案的區域性變數 b.非const 指標無法指向const 變數,只有const 指標能指向const 變數。c.一些const 變數定義在標頭檔案中,const變數通過常量表示式自我初始化時.2.a.a...

重溫C primer 之const總結

1.const變數,即常變數 變數值保持不變,不能被修改 a.const變數預設時是定義該變數的檔案的區域性變數 b.非const 指標無法指向const 變數,只有const 指標能指向const 變數。c.一些const 變數定義在標頭檔案中,const變數通過常量表示式自我初始化時.2.a.a...