首页 > 试题广场 >

下列运算符重载函数中,属于友元函数的是( &nb...

[不定项选择题]
下列运算符重载函数中,属于友元函数的是()
  • Base operator+(Base);
  • Base operator--(Base);
  • Base operator&&(Base, Base);
  • Base operator++(Base,int);
因为+是双目运算符,但是函数里只传了一个参数,就必然使用了this指针,那就肯定不是友元函数了
发表于 2019-08-18 14:47:04 回复(9)

Ÿ   因为友元函数没有当前对象,因此要定义单目运算符,就需要单参函数,要定义双目运算符,就需要双参函数;

Ÿ   定义后置“++"或后置“--"运算是特例,它们是单目运算符,但需要两个形参,头一个形参是作用对象,后一个是int形参;

Ÿ   用友元函数可以定义成员函数不能实现的运算,例如一些双目运算符,右操作数是本类对象,而左操作数不是本类对象;

Ÿ   成员函数体中,当前对象作为一个操作数,无形参形式可以定义单目运算符;

发表于 2020-06-06 17:56:18 回复(4)
下列运算符重载函数中,属于友元函数的是()
  • Base operator+(Base);
  • Base operator--(Base);
  • Base operator&&(Base, Base);
  • Base operator++(Base,int);
首先要明确什么是友元函数,什么样的函数可以作为友元函数。
1、加了friend关键字修饰的函数声明,就是友元函数。
2、成员函数和普通的全局函数都可以作为友元函数。对于成员函数做友元,一般是作为另一个类的友元。
3、其次,明确运算符是几元操作符。+、&&是二元操作符,--/++是一元操作符
对于普通的全局函数而言,二元操作符有两个参数。对于成员函数而言,二元操作符有一个参数。
对于普通的全局函数而言,一元操作符有一个参数(后置++/--除外)。对于成员函数而言,一元操作符没有参数,(后置++/--除外)
由此,根据这三点可知:
A选项,是成员函数,如果不考虑将成员函数作为另一个类的友元,则这个就是错误的。但是本质上是可以的。
B选项,是全局的前置--运算符重载,正确
C选项,是全局的&&运算符重载,正确
D选项,是全局的后置++运算符重载,正确
发表于 2023-05-01 22:51:25 回复(0)

题中B是前置 --
选项D是后置++
发表于 2020-05-17 15:50:08 回复(2)
为啥C 的题目老是刷到c++的知识点
发表于 2021-03-22 22:58:17 回复(0)
友元无this指针,
发表于 2022-11-30 02:03:24 回复(0)
题出错了吧。前置--也可以写成成员函数啊
发表于 2021-06-26 15:32:15 回复(1)
为什么c语言的题目会有c加加的题
发表于 2021-12-12 22:22:03 回复(0)
看错了,原来重载的是&&运算符,我还寻思在怎么引用的引用
编辑于 2023-12-28 11:05:31 回复(0)
多少有点扯淡
发表于 2022-11-15 09:47:38 回复(0)
忘了,害!复习去
发表于 2021-03-05 20:38:27 回复(0)