引用不是定義一個新的變量,而是給一個已經定義的變量重新起一個別名。
定義的格式爲:
類型 &引用變量名 = 已定義過的變量名;
引用的特點:
1. 一個變量可取多個別名
2. 引用必須初始化
3. 引用只能在初始化的時候引用一次,不能改變爲再引用其他的變量。
引用在交換數中的應用:
void swap(int& left,int &right) { int tmp=left; left=right; right=tmp; } int main() { int a=4; int b=2; swap(a,b); cout<<"a:"<<a<<endl; cout<<"b:"<<b<<endl; }
const引用:
void TestReference2 () { int d1 = 4; const int & d2 = d1; d1 = 5; // d1改變 d2的值也會改變。 //d2 = 6; // 不能給常量(不能被修改的量)賦值 const int d3 = 1; const int & d4 = d3; //int&d5 = d3; const int & d6 = 5; // 常量具有常性,只有常引用可以引用常量 double d7 = 1.1; //int& d8 = d7; //d7是double類型,d8是int,d7賦值給 d8時要生成一個臨時變量 // 也就是說d8引用的是這個帶有常性的臨時變量,所以不能賦值。 const int& d9 = d7; }
引用與指針的區別:
1. 引用只能在定義時初始化一次,之後不能改變指向其它變量(從一而終);指針變量的值可變。
2. 引用必須指向有效的變量,指針可以爲空。
3. sizeof指針對象和引用對象的意義不一樣。sizeof引用得到的是所指向的變量的大小,而sizeof指針是對象地址的大小。
4. 指針和引用自增(++)自減(--)意義不一樣。
5. 相對而言,引用比指針更安全。