今天學習時突然有疑惑,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...