- 下面的寫法定義了一個引用,并將其初始化為引用某個變量。
類型名 & 引用名 = 某變量名;
int n = 4;
int &r = n;//r 引用了 n,r 的類型是 int&
- 某個變量的應用,等價于這個變量,相當于該變量的一個別名。
- For example
int n = 7;
int & r = n;
r = 4;
cout << r;//輸出 4
cout << n;//輸出 4
n = 5;
cout << r; //輸出5
注意:
- 定義引用時一定要將其初始化成引用某個變量
- 初始化之后,它一直引用該變量,不會再引用別的變量了。
- 引用只能引用變量,不能引用常量和表達式。
- For example
double a = 4,b = 5;
double & r1 = a;
double r2 = r1;
r2 = 10;
cout<<a <<endl;//10
r1 = b;
cout<<a <<endl;//5
交換兩個整形變量值的函數
//C 語言中的寫法,使用指針,寫法比較丑陋
void swap(int *a,int *b){
int tmp;
tmp = *a;*a = *b;*b = tmp;
}
int n1,n2;
swap(&n1,&n2);
//C++,使用引用,比較清晰
void swap(int&a,int&b){
int tmp;
tmp = a;a= b;b = tmp;
}
int n1,n2;
swap(n1,n2);
引用作為函數的返回值
int n = 4;
int & SetValue(){return n;}
int main()
{
SetValue() = 40;
cout<<n;
return 0 ;
}//返回一個全局變量 n 的引用,對這個引用進行新的賦值為40,那么打印結果就是40.
常引用
- 定義引用時,前面加 const 關鍵字,即為“常引用”
int n ;
const int & r = n;
r 的類型是 const int &
不能通過常引用去修改其應用的內容
int n =100;
const int & r = n;
r = 200;//報錯(常引用的內容不能被修改,但是不意味著常引用的內容不能被修改。)
n = 300;//沒問題
常引用和非常引用的轉換
count T &和 T&是不同的類型!!!
- T & 類型的引用或者 T 類型的變量可以用來初始化 const T & 類型的引用。
- count T 類型的常變量和 const T & 類型的引用則不能用來初始化 T & 類型的引用,除非進行強制類型轉換。