C++引用型別詳解

AK龍發表於2018-04-20

一、引用的概念

下面的寫法定義了一個引用,並將其初始化為引用某個變數。 

型別名 & 引用名 = 某變數名;   

int n = 4; 
int & r = n;  // r引用了 n, r的型別是 int & 

某個變數的引用,等價於這個變數,相當於該變數的一個別名。 

  • 定義引用時一定要將其初始化成引用某個變數。 
  • 初始化後,它就一直引用該變數,不會再引用別的變數了。 
  • 引用只能引用變數,不能引用常量和表示式。 

二、常用用法

2.1 用引用來交換倆個變數的值

簡單例項:

void swap( int & a, int & b) 
{  
	int tmp;
	tmp = a; a = b; b = tmp; 
}
int n1, n2; 
swap(n1,n2) ; // n1,n2的值被交換 

2.2 引用作為函式的返回值

int n = 4; 
int & SetValue() { return n;  }
int main()
{  
	SetValue() = 40;  
	cout << n;  
	return 0; 
} 

上面的程式碼輸出為40。可以看出來函式引用了全域性變數n。

三、常引用

定義引用時,前面加const關鍵字,即為“常引用”。

int n; 
const int & r = n; 

r 的型別是 const int &  

  • 不能通過常引用去修改其引用的內容
int n = 100;  
const int & r = n;  
r = 200;   //編譯錯 
n = 300;  // 沒問題 
  • const T & 和T & 是不同的型別!!! T & 型別的引用或T型別的變數可以用來初始化 const T & 型別的引用。 const T 型別的常變數和const T & 型別的引用則不能用來初始化T &型別的引用,除非進行強制型別轉換。 

相關文章