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

2021-10-03 07:52:12 字數 1086 閱讀 2523

今天學習時突然有疑惑,c++有了指標為何還要設計引用呢?後來看到一篇部落格豁然開朗:為什麼 c++ 有指標了還要引用?

總結一下:

**更加簡潔好看了

由於引用必須被初始化,並且之後也無法重新繫結其他物件,這樣就更安全了

為了操作符過載,比如部落格中那個過載[ ]的例子

並且,在了解了這些之後,對引用的一些其他特性也就一目了然了。

const 引用只可讀不可寫,可以繫結不同型別const/非const物件,或者不可定址的值,如字面值常量。const引用只是表明,保證不會通過此引用改變被引用的物件,但是還可以通過其他方式來改變。

注:不允許非const引用指向需要臨時物件的物件或值,即,編譯器產生臨時變數的時候引用必須為const

例子:

double a=

3.14

;//下3行僅對const引用才是合法的

const

int&b=

1024

;const

int&c= a;

const

double

&d= a+

1.0;

//不可定址

非const引用可讀也可寫,必須繫結相同型別非const物件。不允許非const引用指向需要產生臨時物件的物件或值,即,編譯器產生臨時變數的時候引用必須為const

例1:

int a=3;

int&p=a;

//正確

例2:

double a=

3.14

;int

&p=a;

//錯誤

實際執行:

int tmp=a;

//生成臨時變數

int&p=tmp;

這樣結果是p指向tmp,這樣a就不會隨著p的修改而變化,故出錯。

引用 const引用和非const引用

引用構造了物件的乙個同義詞,是c 物件的另乙個名字。在實際程式中,引用的主要作用是作函式的形參。引用是一種復合型別1,它通過在變數名前新增 來定義。在使用引用的情況下,每一種引用型別都關聯到某一其他型別。c 不能定義引用型別的引用,但是可以定義任何其他型別的引用。int a 100 int refa...

const引用與非const引用

const引用可讀不可改,與繫結物件是否為const無關,注意區分const引用與對const物件的引用 非const引用可讀可改,只可與非const物件繫結 const int ival 1024 const int refval ival ok both reference and object...

c 中const和引用

c 和c語言裡面的const 1 在c語言裡面的const修飾的量是乙個常變數,不能作為左值,但是可以通過洩露指標和引用去修改它,int a 10 int p a 洩露了常量的引用。但是 int a 10 const int p a 是正確的。因為a本來就是普通的變數,而通過常量 p不能改變它,但a...