重载运算符的格式 返回值类型 operator 重载的预算符号(参数)
,其中this是一个对象参数,而且重载运算符必须符合原来的符号运输规则。
比较普通的重载,比如+
,对象相加,我们就要在类中写一个重载+的函数,使得这个+成立:
class A
{
public :
int age;
int operator +(A const mya)
{
return this->age + mya.age;
}
};
比较特殊一点的,重载>>和<< 实现cin>>对象;cout<<对象;这里要使用友元函数,因为如果在类中写的话,调用时不符合原来的运算规则。
class A
{
public :
int age;
int operator +(A const mya)
{
return this->age + mya.age;
}
friend istream& operator >> (istream& cin, A& mya);
friend ostream& operator << (ostream& cout, A& mya);
};
istream& operator >> (istream& cin, A& mya)
{
cin >> mya.age;
return cin;
}
ostream& operator << (ostream& cout, A& mya)
{
cout << mya.age << endl;
return cout;
}
还有一个比较容易错的,就是重载*符号:
class A
{
public :
A* mya;
A& operator *()
{
return *this->mya;
}
};
tips:返回引用的话,我们就必须返回对象而不是对象的指针,所以必须是*this,而this是指针。