我举了以下例子来说明我的问题:
在第一个例子中,运算符重载是类定义的内幕:
// Example program 1
#include <iostream>
#include <string>
class Abc
{
public:
int a_;
Abc(int a):a_(a) {};
bool operator <(const Abc &obj)
{
return this->a_<obj.a_;
}
};
int main()
{
Abc myAbc(3);
Abc yourAbc(4);
bool b = (myAbc<yourAbc);
if(b)
std::cout<<"True";
else
std::cout<<"False";
return 0;
}
在第二个示例中,运算符重载超出了类定义:
// Example program 2
#include <iostream>
#include <string>
class Abc
{
public:
int a_;
Abc(int a):a_(a) {};
};
bool operator <(const Abc &objLeft,const Abc &objRight)
{
return objLeft.a_<objRight.a_;
}
int main()
{
Abc myAbc(3);
Abc yourAbc(4);
bool b = (myAbc<yourAbc);
if(b)
std::cout<<"True";
else
std::cout<<"False";
return 0;
}
在这两个示例中,代码都运行良好。所以我的问题是哪一个更好?或者它们是相同的,这只是一种风格问题。谢谢。