运算符MyClass*()的含义是什么?

kin*_*jia 4 c++

我有以下类定义:

struct MyClass { 
   int id;
   operator MyClass* () { return this; }
};
Run Code Online (Sandbox Code Playgroud)

我很困惑operator MyClass* ()上面的代码中的行.有任何想法吗?

Sto*_*ica 7

它是一个类型转换运算符.它允许将类型的对象MyClass隐式转换为指针,而不需要应用address-of运算符.

这是一个小例子来说明:

void foo(MyClass *pm) {
  // Use pm
}

int main() {
  MyClass m;
  foo(m); // Calls foo with m converted to its address by the operator
  foo(&m); // Explicitly obtains the address of m
}
Run Code Online (Sandbox Code Playgroud)

至于定义转换的原因,这是有争议的.坦率地说,我从来没有在野外看过这个,我无法猜测为什么它被定义.