`this ==&x`是确定指针(this)和引用(x)是否指向同一对象的正确方法吗?

bec*_*cko 5 c++ pointers reference

我有一个类,在这个类中,有一个函数,它将同一个类的另一个实例作为参数.在这个函数里面我需要做一些事情,但是只有传递的参数与当前的参数不同.以下代码是否正确执行此操作?

class Foo
{
    void Foo::func(Foo &other)
    {
        if (this != &other)
            // do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

Sne*_*tel 4

是的,(ptr == &ref)这是确定指针和引用是否指向同一对象的正确方法。(从技术上讲,如果operator&过载,它可能会失败,但这是一种不太可能发生的情况,而且作为该类的作者,您显然已经意识到了这种情况。)

  • 正如已删除的评论之一所建议的,如果“operator&”超载,可以使用“std::addressof” (2认同)