为什么在C++中调用此运算符?

4 c++ overloading operator-keyword

我不明白,为什么在最后一行调用aaa运算符?

#include <iostream>

class MyClass
{
private:
    typedef void (MyClass::*aaa)() const;
    void ThisTypeDoesNotSupportComparisons() const {}
public:
    operator aaa() const { return (true) ? &MyClass::ThisTypeDoesNotSupportComparisons : 0; }
};

int main()
{
    MyClass a;
    MyClass b;

    if(a && b) {}
}
Run Code Online (Sandbox Code Playgroud)

Yoc*_*mer 6

编译器搜索(a && b)的最佳匹配.

因为类没有将MyClass转换为布尔值的运算符,所以它会搜索最佳的强制转换.

operator aaa()const是一个转换为aaa类型的指针.指针可以用句子来评估.

重载类型转换

转换函数(C++)