运算符的重载有两种方法:
1、通过成员函数来重载
2、通过友元函数进行重载
重载的一个重要的特点:
1、成员函数参数的个数 = 几目运算符 - 1;
例如: = ,+,+=,这些运算符都是双目运算符,所以类的成员函数的参数是1.
2、友元函数参数的个数 = 几目运算符。
一般说来,单目运算符最好被重载为成员函数,双目运算符被重载为友元函数。
下面是前置自增运算符和后置自增运算符的重载。
#include<iostream>
using namespace std;
class A
{
public:
A(int i):count(i)
{
}
A& operator++();
A& operator++(int);
void print() const
{
cout<<"count = "<<count<<endl;
}
private:
int count;
};
A& A::operator++()
{
cout<<"调用前置运算符\n";
++count;
return *this;
}
A& A:: operator++(int)
{
cout<<"调用后置运算符\n";
count++;
return *this;
}
int main()
{
A a(5);
a++;
a.print();
cout<<"\n";
++a;
a.print();
return 0;
}
至于为什么重载函数的返回时是引用?
答:再返回的时候,可以避免创建一个*this的副本。