版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27305031/article/details/54341641
- 友元运算符重载函数
由于友元运算符重载不是该类的成员函数,故类外定义时不需要缀上类名。
(1)在类内部定义
friend 函数类型 operator 运算符(形参表)
{
函数体;
}
(2)在类中定义,在类外声明
class X{
friend 函数类型 operator 运算符(形参表);
}
函数类型 operator 运算符(形参表)
{
函数体;
}
2.友元函数
3.单目运算符重载:用友元函数重载单目运算符时,需要一个显式的操作数。
4.在传数据时,用&时形参是对象的引用,是通过地址的方式传递参数的,对形参的改变会改变实参的改变;而直接传递参数时,形参是对象,是通过传值的方式传递参数的,在函数体中任何更改都不会传递到函数体外。
5.成员运算符重载函数:成员运算符重载函数形参表中仅有一个参数,它作为运算符的右操作数,另一个操作数是隐含的,是该类的对象,用this指针传递。
6.成员运算符重载单目运算符重载:返回值是用this 指针返回的。
7.比较
(1)对双目运算符而言,成员运算符重载函数的参数表中含有一个参数,而友元函数参数表中必须有两个参数;对单目运算符而言,成员运算符重载函数参数表中没有参数,而友元运算符重载函数参数表中含有一个参数。
(2)双目运算符一般都可以重载为友元运算符重载函数或成员运算符重载函数,根据出现的左右可能会导致错误(成员运算符重载函数),所以最好使用友元函数。(com1=100+com,com是一个类,如果是成员函数重载则为com1=100.operator(com),故会出错)。
一般而言,双目运算符重载为友元函数比成员函数更加有利于使用。对于单目运算符则选择成员运算符更加方便。