C 中的引用與const

2021-07-11 12:04:35 字數 1008 閱讀 2899

c++中引用與const的組合很容易引起困擾,這篇文章將對這一問題進行簡要介紹。

首先,要明確一些原則:

(1) const是限定符,可以放在引用符&,指標符*的後面,比如:*const,&const;而int是型別符,不能放在&和*的後面,比如:*int,&int都會出錯。

(2) 引用必須初始化,且初始化後不能更改繫結,因此,引用與生俱來便具備const的性質。

(3) &const r = i 實際上是限定了不能修改r的繫結(並非與r繫結的變數i的值),而c++已經規定了引用r本身不能更改繫結,因此這裡新增const修飾是多餘的。&const r 等價於 &r。

假設有int i = 40,引用與const的可能的組合形式有如下幾種:

(1) const int &r = i; 正確,不能修改r,可以修改i

(2) int const &r = i; 正確,與(1)等價

(3) const int const &r = i; 警告,多次使用同一型別限定符,實際上與(1)和(2)等價

(4) int &const r = i;  等價於int &r = i,可以修改r(不能更改r的繫結,但可以通過r修改變數i的值),也可以修改i。出現警告:使用了記時錯誤: 忽略引用上的限定符。

(5) const int &const r = i; 等價於(1),出現警告:使用了記時錯誤: 忽略引用上的限定符。

假設有const int i = 40,引用與const的可能的組合形式有如下幾種:

(1) const int &r = i; 正確,不能修改r,不能修改i

(2) int const &r = i; 正確,與(1)等價

(3) const int const &r = i; 警告,多次使用同一型別限定符,實際上與(1)和(2)等價

(4) int &const r = i;  錯誤:無法從「const int」轉換為「int &」

(5) const int &const r = i; 等價於(1),出現警告:使用了記時錯誤: 忽略引用上的限定符。

C 引用與const引用

1 在實際的程式中,引用主要被用做函式的形式引數 通常將類物件傳遞給乙個函式.引用必須初始化.但是用物件的位址初始化引用是錯誤的,我們可以定義乙個指標引用.1int ival 1092 2 int re ival ok 3int re2 ival 錯誤 4int pi ival 5int pi2 p...

C 基礎 C 中的引用 與const

const int a 10 a唯讀,代表常整型數 intconst b 100 b唯讀,代表常整型數 const int c 20 表示c指向的記憶體空間是常整數型,唯讀,指標c的值可修改 int const d 30 表示指標d為常量唯讀,d指向的記憶體空間可修改 const int const...

C 中const引用和非const引用的使用注意

今天學習時突然有疑惑,c 有了指標為何還要設計引用呢?後來看到一篇部落格豁然開朗 為什麼 c 有指標了還要引用?總結一下 更加簡潔好看了 由於引用必須被初始化,並且之後也無法重新繫結其他物件,這樣就更安全了 為了操作符過載,比如部落格中那個過載 的例子 並且,在了解了這些之後,對引用的一些其他特性也...