我有以下类定义:
struct MyClass {
int id;
operator MyClass* () { return this; }
};
Run Code Online (Sandbox Code Playgroud)
我很困惑operator MyClass* ()上面的代码中的行.有任何想法吗?
它是一个类型转换运算符.它允许将类型的对象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)
至于定义转换的原因,这是有争议的.坦率地说,我从来没有在野外看过这个,我无法猜测为什么它被定义.