如何超载一元和外面的课程?

AMC*_*der 3 c++ operator-overloading

您可以&在类中重载一元运算符:

struct X
{
   void* operator &()
   {
      return this;
   }
};
Run Code Online (Sandbox Code Playgroud)

这样它就会返回一个地址.你会如何在课外重载它:

struct X
{
};

void* operator &(const X& x)
{
    //how?
}
Run Code Online (Sandbox Code Playgroud)

获取参数的地址将导致无限递归.

Jam*_*ock 5

在C++ 11中,有template< class T > T* std::addressof(T& arg).

的std :: addressof

您还可以从Boost Utility获得C++ 03的相同功能