我現在正在C++中遇到異常,並且我注意到之前使用過的一個字符,但不是這樣。這是&標誌,使用cplusplus.com爲: catch (exception& e)
異常 - '&'號的含義
雖然我以前這樣的指針使用它: pointer = &var
這給了指針的變量var
的位置。
中有什麼&角色的兩種用途不同,如果它們是不同的呢?
我現在正在C++中遇到異常,並且我注意到之前使用過的一個字符,但不是這樣。這是&標誌,使用cplusplus.com爲: catch (exception& e)
異常 - '&'號的含義
雖然我以前這樣的指針使用它: pointer = &var
這給了指針的變量var
的位置。
中有什麼&角色的兩種用途不同,如果它們是不同的呢?
還有的&
三層含義:
位與(二元運算符)
0x010 & 0x100 == 0x110
取地址(單目運算符)
int x = 42;
int* p = &x;
參考(當部分類型)
int x = 42;
int& r = x;
您正在看後者。
這不是特定於例外;這僅表示您正在捕獲參考到作爲例外引發的對象。這意味着您不需要複製異常對象,這會提高代碼的安全性,特別是當前正在處理意外(或「異常」)情況。
時間閱讀that C++ book of yours…!
他們不一樣。
pointer = &var;
說pointer
得到的var
地址。
catch (exception& e)
說,當e
傳遞中,我們不會讓一個副本,但是傳遞的事情自己。
我們使用這種常用的功能參數:
void mySwap (int& a, int& b) ...
...
mySwap (x, y);
我們通過在X的和y B,但我們確實在副本,我們會如果沒有&不及格;我們自己傳遞x和y。 (從技術上講,我們通過「引用」來傳遞它,但這就是它的意思。)如果我們想要更改x和y,這是非常重要的,但這也是一個不費吹灰之力的方法。如果你想跳過製作副本,但不能進行參數多變,使用常量:
void myFunction (const Type& thingThatMustNotChanged);
海事組織最好把參考作爲一個像普通物體一樣使用的指針來考慮。就像指針一樣,你可以引用一個不再存在的對象。根據使用情況,多次引用將編譯成指針。 – David 2015-02-06 15:17:07
@Dave:_「就像指針一樣,你可以參考一個不再存在的對象。」_不,我的意思是,當你搞砸時,你可以身體上得到這種情況,但只有在你已經違反了C++語言的先決條件,因此您不再編寫它。所以,在C++中,這是不可能的。 – 2015-02-06 15:20:50
@LightnessRacesinOrbit C++語言的先決條件?你必須詳細說明。使用指針幾乎與使用指針一樣容易 - 它打破的唯一先決條件就是您在自己的程序中構成的任何內容。 'auto a = make_unique (); A&b = * a; a.reset();' - 那裏沒有任何細節。 – David 2015-02-06 15:28:42
在C++中,運營商&「可以被重載。這意味着同一個操作員在不同的環境下可以有不同的含義。 C++中有很多運算符可以重載。
在 '&' 操作者通常具有3名的含義:
在參考的情況下:
int val1 = 2;
int &rval = val1;
在上述情況下
rval
被製成
val1
基準
這意味着任何使用
rval
實際上是利用
val1
注:引用是不是一個對象。這意味着一個引用不會佔用內存中的任何空間,並且一個純引用只能綁定到一個非const對象。但不適用於const對象,文字或表達式的結果。
現在,在指針的情況下:
int val1 = 2;
int *ptr = &val1;
在這種情況下 'VAL1' 的地址被存儲在 'PTR'。但是指針是一個對象,這意味着當我們使用解引用運算符'*'時,我們使用指向的值。但是當我們不使用指針時。
*ptr = 55 // pointed to value is changed
ptr = p; // the pointer's own memory
*最後但並非最不重要的,用作位運算符:
位運算符的工作原理與二進制數字(即,0和1)。當我們使用'&'時,這意味着我們正在使用按位'和'運算符。這是一個二元運算符,這意味着它可以與兩個操作數一起工作。這裏「按位與」運算符測試是否兩個位包含二進制數字「1」,如果是的話,那麼結果是1,否則爲0。
*不要與含有「邏輯和」運營商混淆兩個'& &'。
http://en.cppreference.com/w/cpp/language/reference#Lvalue_references – chris 2015-02-06 15:11:10
您在使用哪本書教導引用前的異常? – 2015-02-06 15:14:53