定義一個引用,并將其初始化為引用某個變量
類型名&引用名=變量名;
int n = 4;
int& r = n; // r引用了 n,r的類型是 int &
某個變量的引用,等價于這個變量,相當于該變量的 一個別名。
int n = 4;
int & r = n;
r = 4;
cout << r; //輸出 4
cout << n; //輸出 4
n = 5;
cout << r; //輸出 5
引用的概念
定義引用時一定要將其初始化成引用某個變量。
初始化后,它就一直引用該變量,不會再引用別
的變量了。
引用只能引用變量,不能引用常量和表達式。
double a = 4, b = 5;
double & r1 = a;
double & r2 = r1; // r2也引用 a
r2 = 10;
cout << a << endl; // 輸出 10
r1 = b; // r1并沒有引用b
cout << a << endl; //輸出 5
引用應(yīng)用的簡單示例
C語言中,如何編寫交換兩個整型變量值的函數(shù)?
void swap( int * a, int * b)
{
int tmp;
tmp = * a;
* a = * b;
* b = tmp;
}
int n1, n2;
swap(& n1,& n2) ; // n1,n2的值被交換
有了 C++的引用:
void swap( int & a, int & b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
int n1, n2;
swap(n1,n2) ; // n1,n2 的值被交換
引用作為函數(shù)的返回值
int n = 4;
int & SetValue() { return n; }
int main()
{
SetValue() = 40;
cout << n;
return 0;
}//輸出:40
常引用
不能通過常引用去修改其引用的內(nèi)容:
int n = 100;
const int & r = n;
r = 200; //編譯錯
n = 300; //沒問題
常引用和非常引用的轉(zhuǎn)換
const T &和T &是不同的類型!
T &類型的引用或T類型的變量可以用來初始化const T &類型的引用。
const T類型的常變量和const T &類型的引用則不能用來初始化T&類型的引用,除非進行強制類型轉(zhuǎn)換。