首页 > 试题广场 >

友元运算符重载函数和成员运算符重载函数有什么不同?

[问答题]

友元运算符重载函数和成员运算符重载函数有什么不同?


推荐
友元运算符重载函数和成员运算符重载函数的不同有以下几点:

(1) 对双目运算符而言,成员运算符重载函数参数表中含有一个参数,而友元运算符重载函数参数表中含有两个参数;对单目运算符而言,成员运算符重载函数参数表中没有参数,而友元运算符重载函数参数表中含有一个参数。

(2) 双目运算符一般可以被重载为友元运算符重载函数或成员运算符重载函数,但有一些情况,必须使用友元运算符重载函数,例如一个常数与一个对象相加。有的运算符(如  ”等)只能使用成员运算符重载函数。

(3) 成员运算符函数和友元运算符函数都可以用习惯方式调用,也可以用它们专用的方式调用,如表7,1所示。
表7.1运算符函数调用形式

习惯调用形式

友元运算符重载函数调用形式

成员运算符重载函数调用形式

a+b

operator+ (a,b)

a. operator+ (b)

-a

operator-(a)

a. operator-()

a ++

operator+ +a0

a. operator+ +0

(4)c ++的大部分运算符既可说明为成员运算符函数,又可说明为友元运算符函数。

究竟选择哪一种运算符函数好一些,没有定论,这主要取决于实际情况和程序员的习惯。

发表于 2018-05-05 21:26:20 回复(0)