在重载前置的操作符时按正常即可。
eg. classname & operator++(classname & clas) ; //前置重载声明 ;
eg. classname & operator++(classname & clas, int) //后置重载声明, 函数重载不以 返回类型作为判断依据,所以应加一个占位符 .而且 注意后置是先调用值,再进行后置的操作。
Stud operator++(Stud & stu1 ,int )
{
Stud temp = stu1 ;
stu1.num++ ;
return stu1 ;
}
前面的重载既可以用全局函数(即友元函数来实现),也可以用类成员函数来实现。
而 << 左移操作符 和 >> 右移操作符的重载则必须要用友元函数来实现。
istream & operator<<( istream & os ,const classname & clas) ;
ostream & operator >>(ostream & , const class & clas) ;
友元函数没有this指针,所需操作数都必须在参数表显式声明,很容易实现类型的隐式转换。
下面这些操作符号是不能用友元函数来进行重载的。
= () 【】 ->
友元函数正在的用处即在此处。