检查引用是否指向C ++中的特定对象

时间:2017-11-10 20:13:35

标签: c++ reference equality

如何检查引用是否指向C ++中的特定对象?

我的意思是这样的:

int x(0);
int& xR = x;
if(xR == x)
{
//xR is refering to x
}
else
{
//xR is not refering to x
}

2 个答案:

答案 0 :(得分:6)

他们将拥有相同的地址。

if( &xR == &x )
{
//xR is referring to x
}

答案 1 :(得分:2)

template <class T> T* addressof (T& ref) noexcept

此函数返回地址  即使在存在重载的参考运算符(运算符&amp;)的情况下也参考。

if(std::addressof(xR) == std::addressof(x)) 
{ 
      yadayadayada 
}