C 基礎知識複習 const關鍵字

2021-05-23 22:53:35 字數 1193 閱讀 2886

沒事翻了下c++ primer,開卷有益吧,加深下印象,留個複習記錄如下:

1、const 指標與指向 const物件的指標

const int * p;/*指向const int 的指標*/

int * const p;/*指向int的const指標*/

記憶方法:從右往左讀,*讀作is a pointer to。

2、const形參

在非引用或非指標傳值時,const修飾符無意義,因為複製傳值的時候,不可能改變實參的值。

const int &與int &不同,此處不同可作為區分函式過載的標識。

沒有int const &(這點與指標不同,指標分常指標與指向常變數的指標等),引用初始化的時候就已經賦值,不能像指標一樣改變指向的物件,引用只是乙個別名。

const int *與int * const 參考第一點。

3、const函式。

const函式不能改變類成員變數的值,除非該成員變數被mutable修飾,這是因為const 函式所傳遞的指標是指向const 物件的指標。

4、const物件

const物件在初始化之後就不能修改類物件的成員,const物件在初始化之後只能呼叫const成員函式。

5、const成員函式

const成員函式不能修改物件中的任何成員(靜態成員除外),但是此函式若改變成員變數指標指向的物件的值,編譯器無法發覺並提出警告,這點要特別注意。(編譯器僅僅檢測類中物件是否被修改,而沒有檢測指標指向的物件,改變成員指標指向物件的值這點不符合const成員函式的定義,但編譯器無法發覺。) 

6、指向const的指標不能改變非const物件的值(編譯器會報錯),指向const的指標可以理解為「自以為指向const物件的指標」,不能通過指向const物件的指標來修改物件,但是通過其他途徑來修改物件編譯器並不會報錯。

7、全域性const物件與const物件的初始化

const必須在定義的時候初始化,之後不能修改。與其他變數不同,除非特別說明,在全域性作用域宣告的const變數是定義該物件的檔案的區域性變數——此變數只存在於那個檔案中,不能被其他檔案訪問。

若如下宣告const變數,就可以在整個程式中訪問const物件:

//檔案1

extern const int bufsize = 512;//定義並初始化

//檔案2

extern const int bufsize;//用檔案1中的bufsize變數

Java基礎知識 super關鍵字

1 繼承要注意的幾點 屬性和方法的不同。屬性不可重寫,屬性可以覆蓋 屬性沒有多型性,屬性值取決於引用型別 方法可以重寫,方法有多型性 方法的行為取決於物件而不取決於引用類 生成子類物件必須呼叫父類構造方法,子類構造方法必須和父類構造方法匹配。下面程式 中a.name與a.fn 分別為屬性和物件。繼承...

C語言基礎知識 關鍵字之volatile

作用 這個關鍵字的作用是為了確保這條指令不會因為編譯器的優化而省略,要求每次直接讀取變數原來的值。volatile關鍵字是一種型別修飾符,它宣告的型別變數可能被某些編譯器的未知因素更改。例如作業系統 硬體或者其它的執行緒,當遇到這個關鍵字的時候,編譯器就不會再對 進行優化,從而可以提供對特殊地質的穩...

C語言基礎知識 一 關鍵字

儲存類別說明符變數 auto register static extern thread local typedef 儲存型別限定符 const volatile restrict atomic 1 register 暫存器變數,c語言要求用register修飾的變數通常儲存在cpu的暫存器中,防止...