定義引用時,程式把引用和它的初始值繫結在一起,而不是把初始值拷貝給引用。一旦初始化完成,引用將和它的初始值物件一直繫結在一起,因此無法讓引用繫結另乙個物件,所以引用必須初始化。所有引用的型別都必須要和與之繫結的物件嚴格匹配,而且引用只能繫結在物件上,而不能和字面值或表示式的結果繫結在一起,以下兩種情況例外:
初始化常量引用時執行用任一表示式做初始值,只要結果能夠轉換成引用的型別。(臨時變數不可)
可將基類的引用繫結到派生類物件上。
存放常量物件的位址,只能使用指向常量的指標。
允許指向常量的指標指向非常量物件。
因為常量物件一旦建立其值不可改變,所以常量物件必須初始化。預設情況下,常量物件僅在檔案內有效,要實現檔案間共享需在多個檔案的定義或宣告中加extern關鍵字。
頂層const:指標本身是常量,也可表示任何物件是常量。
底層const:指標指向的物件是常量。用於申明引用的const都是底層const
當執行物件的拷貝操作時,常量是底層const還是頂層const區別明顯。其中頂層const不受什麼影響,但執行物件的拷貝狀態時,拷入和拷出物件都必須具有必要的底層const資格,或者兩個物件的資料型別必須能夠轉換。一般來說,非常量可以轉換成常量,反之不行。
常量表示式:值不會改變並且在編譯過程就能得到計算結果的表示式。字面值屬於常量表示式,用常量表示式初始化的const物件也是常量表示式。
constexpr變數:申明為constexpr的變數一定是常量,且必須由常量表示式初始化。乙個constexpr指標的初始值必須是nullptr或者0或者是儲存於某個固定位址的物件。在constexpr宣告中如果定義乙個指標,限定符constexpr僅對指標有效,與指標所指的物件無關。
引用,指標,常量引用,常量指標,指標常量的區別
1.指標 指標代表乙個變數的位址 例如 int a 2,b 1,pi a pi b 2.引用 引用即針對乙個變數的別名,引用必須被初始化,引用作為引數 形參 時,不會像指標一樣使用儲存單元,更不會像值傳遞一樣建立該引數的副本,提高空間 時間效率。例如 int a 2,b a 3.常量引用 格式為 c...
《C Primer》引用和指標
學習c 的時候,我越來越感覺如果沒有真正學會引用和指標,那麼其他的部分就非常難以理解。因此,對於c 來說,引用和指標是絕對基礎而又重要的。我們可以想象一下,對門王奶奶養了乙隻加菲貓,王奶奶給這只貓起名字叫 球球 那麼,球球 就是 王奶奶的加菲貓 這個物件的引用。由此引出了引用的定義 引用為物件起了另...
C Primer筆記 頂層const 常量指標
之前對到底怎樣寫是常量指標 頂層const 怎樣寫不是,怎樣寫又是語法錯誤很糊塗,現在做個筆記。c primer 原文 很多程式設計師容易迷惑於基本資料型別和型別修飾符的關係,其實後者不過是宣告符的一部分罷了。個人理解 int是基本資料型別,是型別修飾符,p是宣告符。先總結一下各種情況 1 intc...