| 導購 | 订阅 | 在线投稿
分享
 
 
 

新手入門:C++下的引用類型

來源:互聯網網民  2008-06-01 01:11:29  評論

引用類型也稱別名,它是個很有趣的東西。在c++ 下你可以把它看作是另外的一種指針,通過引用類型我們同樣也可以間接的操作對象,引用類型主要是用在函數的形式參數上,通常我們使用它是把類對象傳遞給一個函數。 =版權所有 熱點網絡 熱點下載 熱點網絡學院 版權所有=

引用對象采用類型名加上&符號和名稱的方式進行定義。例如:(int &test;),這裏我們就定義了一個int類型的名爲test 的引用,但是int &test;這樣的方式是不能夠被編譯成功的,因爲引用的定義必須同時給應用進行賦值操作,這裏的賦值並不是說把變量的值傳遞給引用,而是把引用指向變量,寫成這樣就對了:(int &test=變量名;)。

#include <iostream>

using namespace std;

void main(void)

{

int a=10;

int &test=a;

test=test+2;

cout << &a << "|" << &test << "|" << a << "|" <<test << endl;

cin.get();

}

觀察並編譯運行上面的代碼你會發現&a和&test的地址顯示是相同的,a和test的值顯示也是一樣的!

結合前一個教程的內容我們來說一下const引用的相關內容,這裏要非凡注重,和前一個教程一樣帶const修飾的引用同樣也輕易混淆概念!

const修飾假如用在引用上會有一個非凡之處,它的奧妙就在于可以進行不同類型的對象的初始化,而這一切在普通變量操作上是不可能的下面我們來看一個例子:

#include <iostream>

using namespace std;

void main(void)

{

int a=10;

//double &test = a + 1.2f; //這句就是錯誤的!

const double &test = a + 1.2f;

cout << &a << "|" << &test << "|" << a << "|" <<test << endl;

cin.get();

}

上面的代碼足夠說明問題了,這就是const修飾帶來的好處,但是聰明的人會在輸出的時候發現一個問題,就是a和test的值的輸出不同,按照最先說的道理應該可以改變a的值呀,爲什麽在這裏卻有沒有能夠改變呢? =版權所有 熱點網絡 熱點下載 熱點網絡學院 版權所有=

道理是這樣的,const修飾過後的引用在編譯器內部是這樣進行變化的。

int a=10;

const double &test = a + 1.2f;

這樣的一段代碼在編譯器認爲卻是下面的方式進行的

int a=10;

int temp = a;

const double &test = temp + 12.f

這裏其實是把a的值賦給了一個臨時temp 變量,而後test獲得的卻是temp+12.f 改變的是temp而不是a,所以就出現了a和test顯示的值不同的情況,這裏要非凡注重,這是一個很輕易混淆的地方,在編寫程序的時候要非凡仔細,以免出現了問題卻檢查不出爲什麽

 
特别声明:以上内容(如有图片或视频亦包括在内)为网络用户发布,本站仅提供信息存储服务。
 
引用類型也稱別名,它是個很有趣的東西。在c++ 下你可以把它看作是另外的一種指針,通過引用類型我們同樣也可以間接的操作對象,引用類型主要是用在函數的形式參數上,通常我們使用它是把類對象傳遞給一個函數。 =版權所有 熱點網絡 熱點下載 熱點網絡學院 版權所有=   引用對象采用類型名加上&符號和名稱的方式進行定義。例如:(int &test;),這裏我們就定義了一個int類型的名爲test 的引用,但是int &test;這樣的方式是不能夠被編譯成功的,因爲引用的定義必須同時給應用進行賦值操作,這裏的賦值並不是說把變量的值傳遞給引用,而是把引用指向變量,寫成這樣就對了:(int &test=變量名;)。 #include <iostream> using namespace std; void main(void) { int a=10; int &test=a; test=test+2; cout << &a << "|" << &test << "|" << a << "|" <<test << endl; cin.get(); }   觀察並編譯運行上面的代碼你會發現&a和&test的地址顯示是相同的,a和test的值顯示也是一樣的!   結合前一個教程的內容我們來說一下const引用的相關內容,這裏要非凡注重,和前一個教程一樣帶const修飾的引用同樣也輕易混淆概念!   const修飾假如用在引用上會有一個非凡之處,它的奧妙就在于可以進行不同類型的對象的初始化,而這一切在普通變量操作上是不可能的下面我們來看一個例子: #include <iostream> using namespace std; void main(void) { int a=10; //double &test = a + 1.2f; //這句就是錯誤的! const double &test = a + 1.2f; cout << &a << "|" << &test << "|" << a << "|" <<test << endl; cin.get(); }   上面的代碼足夠說明問題了,這就是const修飾帶來的好處,但是聰明的人會在輸出的時候發現一個問題,就是a和test的值的輸出不同,按照最先說的道理應該可以改變a的值呀,爲什麽在這裏卻有沒有能夠改變呢? =版權所有 熱點網絡 熱點下載 熱點網絡學院 版權所有=   道理是這樣的,const修飾過後的引用在編譯器內部是這樣進行變化的。 int a=10; const double &test = a + 1.2f;   這樣的一段代碼在編譯器認爲卻是下面的方式進行的 int a=10; int temp = a; const double &test = temp + 12.f   這裏其實是把a的值賦給了一個臨時temp 變量,而後test獲得的卻是temp+12.f 改變的是temp而不是a,所以就出現了a和test顯示的值不同的情況,這裏要非凡注重,這是一個很輕易混淆的地方,在編寫程序的時候要非凡仔細,以免出現了問題卻檢查不出爲什麽
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有