2014-09-01 47 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?

其他用途当然可能需要不同的语义,例如,逻辑平等而不是物理的。