首页 > 试题广场 >

一个运算符重载函数被定义为成员函数或友元函数后,在定义方式、

[问答题]

一个运算符重载函数被定义为成员函数或友元函数后,在定义方式、解释方式和调用方式上有何区别?可能会出现什么问题?请用一个实例说明之。

推荐
以二元运算符为例。

运算符重载

定义

解释

调用

成员函数

Obj& operator op();

Obj operator op(object);

Obj.operator op()

ObjL.operator op(ObjR)

Obj op op Obj

ObjL op ObjR

左操作数通过this指针指定,右操作数由参数传递

友员函数

friend Obj & operator op(Obj &);

friend Obj operator op(Obj,Obj);

operator op(Obj)

operator op(ObjL,ObjR)

Obj op op Obj

ObjL op ObjR

操作数均由参数传递

可能会出现的问题:

(1)运算符的左右操作数不同,须用友员函数重载;

(2)当运算符的操作需要修改类对象状态时,应用成员函数重载。

(3)友员函数不能重载运算符= () [] ->

必须要用友员函数重载的运算符>> <<

程序略。



发表于 2018-05-07 15:13:13 回复(0)