引用是一種複合類型(compound type),我們通常所說的引用爲左值引用(lvalue reference),C++11中新增加了一種引用,叫做右值引用(rvalue reference),這種引用主要用於內置類中,稍後介紹,今天主要講我們通常說的引用,也就是左值引用。
引用,其實是爲對象另起一個名字。
- 通過&定義,當然引用定義的時候必須初始化
int &preValue = ival;
- 一般情況下引用的對象爲變量、引用的類型與所引用的對象的類型必須一致
double &preValue = ival;// ival爲int型
int &preValue = 1.0;
引用不同於賦值,它是將對象與引用綁定到一起,也可以這樣理解一個對象有兩個名字,不論用哪個名字改變,該對象都會發生變化
引用本身不是一個對象,所以不能定義引用的引用。
例如:上述例子中,ival = 2;則preValue 也爲2;若執行preValue = 10;則此時使用ival,他對應的值也爲10;
特殊情況下,可以不遵守引用的對象必須爲變量,類型必須相同的規定,下面我們闡述這種特殊情況
使用引用常量的時候,
const double & ival= 1.9;
int ival = 4; const double &preValue = ival ;
以上兩個例子都是正確的。但是,我們不能通過改變preValue的值今兒改變對象ival 的值
明確一點:const類型的變量,除了初始化的時候可以賦值,其餘情況下不能通過“=”改變他的值