1.一个简单的demo
class YY
{
public:
YY(int data = 1):Data(data) {};
bool operator== (const class YY& y)const
{
return Data == y.Data;
}
int Data;
};
class XX
{
public:
operator class YY()const { return YY(20); }
XX getvalue() { return *this; }
};
int main()
{
XX x;
YY y(20);
if (y == (x.getvalue()))
{
cout << "Yes" << endl;
}
return 0;
}
①y == (x.getvalue()) 第一次会被决议为 y.operator==(( x.getvalue() ))
②但是x.getvalue()返回的是一个XX的对象,需要转化为一个YY的对象,必须施行于getvalue的返回值上面
y.operator==(x.getvalue().operator Y() ))
我们来看一下过程
产生了一个临时的classXX的object,放置getvalue()的返回值
产生了一个临时的classYY的object,放置operatorY()的返回值
产生了一个临时的bool的object,放置判断的结果
然后析构函数被调用