1.重载操作符跟重载函数一样的,只不过要区分成员的和非成员的
成员的重载操作符,第一个参数默认了是this 指针形参,所以重载操作符作为成员函数,都应该是右操作符
比如:
ostream& operator<<(ostream &out) //右操作运算符 调用方式:Screen s;s<
{
out<<'('<
return out;
}
friend ostream& operator<<(ostream& out,Screen& s) //友原函数的重载操作符
{
out<<'('<
return out;
}
上述一个成员,一个非成员重载方式,调用相应如下:
s1<
std::cout<
2.至于返回值,值得注意的地方是:
何时返回类型的引用值何时返回类类型,应该跟内置的操作符一致;
比如+=返回引用,+则应该返回类类型本身。
如下:
Screen& operator+=(Screen& rhs) //复合赋值操作符
{
height += rhs.height;
width += rhs.width;
*pContents += *(rhs.pContents);
return *this;
}
friend Screen operator+(Screen& s1,Screen& s2 )
{
Screen s;
s.width = s1.width+s2.width;
s.height = s1.height+s2.height;
*(s.pContents) = *(s1.pContents)+*(s2.pContents);
return s;
}
//可以两种方式调用:
Screen s0,s1,s2;
s0=s1+s2; //隐式调用
//或者
s0=operator+(s1,s2);//我理解为显式调用