-
操作符重載實現(xiàn)為類成員函數(shù)
重載的操作符在類體中被聲明碑韵,聲明方式如同普通成員函數(shù)一樣,只不過他的名字包含關鍵字operator逼蒙,以及緊跟其后的一個c++預定義的操作符澈蝙。
可以用如下的方式來聲明一個預定義的==操作符:
class person{
private:
int age;
public:
person(int a){
this->age=a;
}
inline bool operator == (const person &ps) const;
};
實現(xiàn)方式如下:
inline bool person::operator==(const person &ps) const
{if (this->age==ps.age)
return true;
return false;
}
調(diào)用方式如下:
include
using namespace std;
int main()
{
person p1(10);
person p2(20);
if(p1==p2) cout<<”the age is equal!”< return 0;
}
這里吓坚,因為operator ==是class person的一個成員函數(shù),所以對象p1,p2都可以調(diào)用該函數(shù)灯荧,上面的if語句中礁击,相當于p1調(diào)用函數(shù)==,把p2作為該函數(shù)的一個參數(shù)傳遞給該函數(shù)逗载,從而實現(xiàn)了兩個對象的比較哆窿。
- 操作符重載實現(xiàn)為非類成員函數(shù)(全局函數(shù))
對于全局重載操作符,代表左操作數(shù)的參數(shù)必須被顯式指定厉斟。例如:
include
include
using namespace std;
class person
{
public:
int age;
public:
};
bool operator==(person const &p1 ,person const & p2)
//滿足要求更耻,做操作數(shù)的類型被顯示指定
{
if(p1.age==p2.age)
return true;
return false;
}
int main()
{
person rose;
person jack;
rose.age=18;
jack.age=23;
if(rose==jack)
cout<<"ok"< return 0;
}