1.重载单目运算符:(后置的函数的参数中的int,仅仅是系统用来区别前置还是后置,没有特别含义)
重载为成员函数:(前置)
T T::operator ++()
{
......
return *this;
}
解读:重载自增运算符++,return *this;:返回的是自增后的对象(当前对象);
为什么无参呢?
首先++是单目运算符,只有一个操作数,其次重载为成员函数,函数有一个参数*this—— 指向当前对象(调用这个函数的对象),*this必须省略,所以相当于无参。
(后置):
T T::operator ++(int)
{
T temp(*this);
.....
return temp;
}
return temp; temp记录当前对象自增前的值;
若定义为普通函数则为:(有形参)
(前置):
T& operator ++(T& b)
{
......
return b;
}
(后置):
T& operator ++(T& b,int){......}
前置和后置的区别:
(前置)++a:先加后用
int b,a=1;
b=++a;//b=2,a=2
(后置)a++:先用后加
int b,a=1;
b=a++;//b=1,a=2
2.重载流插入“<<”和流提取"<<":双目运算符,(只能定义为友元函数)
首先,我们要知道,cout是在i0stream中定义的,ostream类的对象
其次,“<<” 能用在cout上是因为在iostream里对“<<” 进行了重载;