2014-09-01 50 views
-2

引用標準方式是有比較什麼是波紋管做了身份基本實現兩個引用的標準方式:如果你想確保引用不引用同一對象比較身份

bool compareForIdentity(int& a,int& b){return &a==&b;} 
+10

http://en.cppreference.com/w/cpp/memory/addressof – chris 2014-09-01 20:54:30

+0

我甚至沒有意識到它可能會超載&。但不管怎麼說。 std :: addressof操作符以任何方式執行我使用&所做的操作。它可以例如是變量a是一個寄存器變量,b也是。 – 2014-09-01 20:57:21

+0

我希望有一個更爲標準的比較身份參考的方法。 – 2014-09-01 21:06:29

回答

0

那麼是的,比較你所顯示的地址確實是標準的方式。 (內置)地址運算符返回所引用對象的地址,而不是引用的地址(在概念上,它可以被認爲是沒有任何對象表示的另一個名稱)。這是通常需要的語義確保一個NOP副本本身。

爲了確保使用內置的地址運算符(與任何重載相對),如果有點棘手,似乎是可能的。 How can I reliably get an object's address when operator& is overloaded?

其他用途當然可能需要不同的語義,例如,邏輯平等而不是物理的。