class Data
{
public:
explicit Data(int val):m_val(val)
{
}
const int getVal() const
{
return this->m_val;
}
private:
int m_val;
};
// 重载全局operator==, 不用直接访问Data类的私有变量
bool operator==(const Data& lval, const Data& rval)
{
cout<<"operator==(const Data&,const Data&)"<<endl;
return lval.getVal() == rval.getVal();
}
// 重载全局operator==
bool operator==(const Data& data, int val)
{
cout<<"operator==(const Data&,int)"<<endl;
return data.getVal()==val;
}
// 重载全局operator==
bool operator==(int val, const Data& data)
{
cout<<"operator==(int, const Data&)"<<endl;
return ::operator(data,val);
}
int main()
{
Data data1(1);
Data data2(1);
cout<<(data1==data2)<<endl; // operato==(const Data&,const Data&)
cout<<(1 == data1)<<endl; // operator==(int, const Data&)
cout<<(data1 == 1)<<endl; // operator==(const Data&,int)
}