第12課 - 解析const和指針關係

一、C++的const常量的判別準則

(1)只有用字面量初始化的const常量纔會進入符號表

(2)被volatile修飾的const常量不會進入符號表

(3)使用其它變量初始化的cosnt常量仍然是隻讀變量

(4)在編譯期間不能直接確定初始值的const標識符,都被作爲只讀變量處理。

(5)使用相同類型的常量初始化const引用變量,const引用變量只是只讀變量,和常量內存地址一樣。

(6)使用不同類型的變量初始化const引用變量,const引用變量會成爲一個新的只讀變量,和初始化變量內存不一樣。

上述的第(1)點如圖1所示;第(2)、(3)、(4)點如圖2所示;第(5)、(6)點如圖3所示:

                                                                   圖1

圖2

圖3

二、引用與指針的關係

指針是一個變量,值爲一個內存地址,不需要初始化,可以保存不同的地址;通過指針可以訪問對應內存地址中的值;指針可以被const修飾成爲常量或者只讀變量。

引用只是一個變量的新名字;對引用的操作(賦值、取地址等)都會傳遞到代表的變量上,const引用使其代表的變量具有隻讀屬性;引用必須在定義時初始化,之後無法代表其它變量。

從使用C++語言的角度看;引用與指針沒有任何的關係;引用是變量的新名字,操作引用就是操作對應的變量。

從C++編譯器的角度看;爲了支持新概念“引用”必須要一個有效的解決方案,在編譯器內部,使用指針常量來實現“引用”;因此“引用”在定義時必須初始化。

引用數組的使用和注意情況如圖4所示:

圖4

三、小結

(1)指針是一個變量;

(2)引用是一個變量的新名字;

(3)const引用能夠生產新的只讀變量;

(4)在編譯器內部使用指針常量實現“引用”;

(5)編譯時不能直接確定初始值的const標識符都是隻讀變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章