C++引用型別詳解
一、引用的概念
下面的寫法定義了一個引用,並將其初始化為引用某個變數。
型別名 & 引用名 = 某變數名;
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 &型別的引用,除非進行強制型別轉換。
相關文章
- 詳解C++引用C++
- C++ 引用型別簡介C++型別
- C++之string型別詳解C++型別
- C++中指標與引用詳解C++指標
- 詳聊Java的四種引用型別Java型別
- JavaScript引用型別-Object型別JavaScript型別Object
- 值型別和引用型別型別
- js引用型別JS型別
- javascript:引用型別JavaScript型別
- JavaScript值型別和引用型別JavaScript型別
- ECMAScript 原始型別與引用型別型別
- c#:值型別&引用型別C#型別
- js基本型別和引用型別區別JS型別
- 值型別與引用型別的區別型別
- JavaScript - 基本型別與引用型別值JavaScript型別
- Java的基本型別和引用型別Java型別
- Go 的引用型別Go型別
- Golang 引用型別-mapGolang型別
- 引用型別之Object型別Object
- C#型別詳解C#型別
- JS篇-基本型別和引用型別、typeofJS型別
- c#中值型別和引用型別的區別C#型別
- C++類內成員變數可以定義引用型別嗎C++變數型別
- Java引用型別原理剖析Java型別
- Java引用型別與WeakHashMapJava型別HashMap
- C++ 重解釋型別轉換C++型別
- JavaScript 資料型別與型別判斷詳解JavaScript資料型別
- SAP 移動型別詳解型別
- 詳解MySQL資料型別MySql資料型別
- MySQL 資料型別詳解MySQL 資料型別
- JavaScript——資料型別詳解JavaScript資料型別
- 區別值型別資料和引用型別資料型別
- Java引用型別解析:掌握強引用、軟引用、弱引用和幻象引用的妙用Java型別
- 詳解c++指標的指標和指標的引用C++指標
- C++ 使用者輸入與資料型別詳解:建立基本計算器及變數型別C++資料型別變數
- 基本資料型別與API引用型別的使用資料型別API
- C++ 數學函式、標頭檔案及布林型別詳解C++函式型別
- Git Reference引用詳解Git