1.const變數,即常變數(變數值保持不變,不能被修改)
a.const變數預設時是定義該變數的檔案的區域性變數
b.非const*指標無法指向const 變數,只有const *指標能指向const 變數。
c.一些const 變數定義在標頭檔案中,const變數通過常量表示式自我初始化時.
2.a.
a.const t *pstr;指向常物件的指標,簡單理解成*pstr不變,即指向的物件不變。這種指標的作用是指向物件時,防止指針對指向的物件進行修改值,起保護物件的值的作用
b.t * const pstr;常指標,簡單理解成pstr不變,即指標變數的值不變。這種指標的作用指向該物件後,則只能指向該物件,不能指向其他物件,可以對該物件的值進行修改。
c.const t * const pstr;指向常物件的常指標,簡單理解成*pstr不變,pstr不變,即指向的物件不變且指標變數不變。這種指標的作用是指向該物件後,則只能指向在該物件,不能指向其他物件,不可以對該物件的值進行修改。
b.const 指標與非const指標
a.無法從「const t *」轉換為「t *」,假如行的話,則會修改該指標指向的物件的值,則不合理,不成立,破壞了const的作用,編譯器所以報錯
無法從"const t * const"轉換為"t *"
b.非const指標能轉換為const指標
3.const 引用
const t &pstr;指向常物件的引用
問題:無法從"const t "轉換為"t &";
非const引用只能繫結到與該引用同型別的物件
const引用則可以繫結到不同但相關的型別的物件或繫結右值
4.a.const 成員函式
a object;
內部呼叫過程:const a *this=&object;
this->該成員函式;
該函式過程的作用是防止函式被呼叫後執行過程中某個語句修改了呼叫該函式的物件的值,其實就是保護呼叫該函式的物件的值
b.const成員函式與非const成員函式
a.const 成員函式不可以訪問非const 成員函式原因是const *this 指標不能轉換為 this指標
b.非const 成員函式可以const 成員函式原因是 this指標能轉換為const *this 指標
5.const 物件,即常物件.
const 物件只能呼叫const 成員函式,不能呼叫非const 成員函式。原因就是const物件由const *this指標指向,而不能由非const *this指標指向。
非const物件既能呼叫非const成員函式,又能呼叫const 成員函式。非const物件能呼叫const成員函式的原因就是this指標轉換為const *this指標。
6.const物件的動態分配和**
與其他常量一樣,動態建立的const物件必須在建立時初始化,並且已經初始化,其值就不能再修改。對於類型別的const動態物件,如果該類提供了預設的建構函式,則此物件可隱式初始化。
內建內型物件或未提供預設建構函式的類型別物件必須初始化。
7.const資料成員
在類中說明const資料成員時,只能通過成員初始化列表的方式來生成建構函式對資料成員初始化。
8.volatile
有些編譯程式在編譯過程中還改變 表示式的計算順序,volatile可以防止這些改變的發生。
volatile用法跟const差不多。
重溫C primer 之const總結
1.const變數,即常變數 變數值保持不變,不能被修改 a.const變數預設時是定義該變數的檔案的區域性變數 b.非const 指標無法指向const 變數,只有const 指標能指向const 變數。c.一些const 變數定義在標頭檔案中,const變數通過常量表示式自我初始化時.2.a.a...
C primer學習 const 總結
春節比較空閒,重新學習c 使用課本 c primer。學習到90頁,看到書中對const的解釋,於是在這裡對const總結了一下,發現原來有這麼多的注意事項 1.在c語言中const修飾的是全域性的唯讀變數 在c 中,const修飾的是不具有外部鏈結的常量,若要在其他檔案中使用,必須宣告為exter...
const 引用 c primer筆記
const 引用是指向 const 物件的引用 const int ival 1024 const int refval ival ok both reference and object are const int ref2 ival error non const reference to a ...