2011-07-10 22 views
1

C++中的隱式解引用是什麼意思?這是否意味着當我將變量的引用傳遞給函數參數時,我不需要在它前面使用&來使用它的值?什麼是C++中的隱式解引用

+3

你從哪兒聽到的?並回答你的問題:你取消引用指針。引用不是一個指針,它是一個引用。 – GManNickG

+0

你的意思是用構造函數進行隱式轉換嗎? – jtbandes

+0

在我的課程筆記中簡要提及它,我不確定它的含義。另外,Wiki似乎太含糊。如果該詞不存在,請隨時關閉該問題。 – Mark

回答

10

我假設你的教學是試圖解釋指針和引用之間的區別。

將引用引用爲隱式去引用的幻想指針是比較常見的(儘管在技術上並不準確)。

int x = 5; 
int* xP = &x; 
int& xR = x; 


xR = 6; // If you think of a reference as a fancy pointer 
     // then here there is an implicit de-reference of the pointer to get a value. 

*xP = 7; // Pointers need an explicit de-reference. 

想想正確的方法是使用「引用是一個奇特的指針」。你需要以他們自己的方式思考引用。它們基本上是現有變量的另一個名稱(又名別名)。

所以,當你通過引用一個函數傳遞一個變量。這意味着該函數正在使用通過其別名傳遞的變量。該函數有一個現有變量的另一個名稱。當功能修改變量時,它修改原始值,因爲參考原始變量(只是它的另一個名稱)。

所以回答你的問題:

我不需要&在它前面使用它的價值?

不,您不需要添加&。

int f(int& x) // pass a value by reference 
{ 
    x =5; 
} 

int plop = 8; 
f(plop); 
// plop is now 5. 
3

另一個在C++會隱解引用指針是函數指針方面:

void foo() { printf("foo\n"); } 

void bar() { 
    void (*pf)() = &foo; 
    (*pf)(); // Explicit dereference. 
    pf(); // Implicit dereference. 
} 
相關問題