首页 > 试题广场 >

下列运算符函数中,肯定不属于 Value 的成员函数的是()

[单选题]
对于类Value,下面运算符重载的写法错误的是()
  • Value operator-(Value, Value)
  • Value operator+(Value)
  • Value operator*(int)
  • Value operator/(Value)
运算符-有两个参数 成员函数会隐含一个参数 所以A选项加上两个形参就是三个参数 错误
发表于 2021-03-17 23:38:37 回复(0)
三短一长?
发表于 2021-03-10 00:49:40 回复(2)
这道题最开始做的时候忽略了“类value”这个条件,当在类中,说明重载为成员函数,成员函数有一个this指针,也就是已经有了一个参数,所以重载单目运算符时,不需要参数,重载双目运算符时,只需要一个参数
发表于 2022-04-20 12:53:34 回复(0)
有2个参数时就只能是友元函数了,也就不是成员函数了
发表于 2021-08-07 18:11:34 回复(1)
这题也没说是成员函数呀🙃我数据成员都是public我也不需要友元呀


发表于 2022-06-10 14:51:16 回复(1)

在 C++ 中,运算符重载函数可以作为成员函数或者非成员函数进行定义。当运算符重载作为成员函数时,确实会隐式地具有一个额外的参数,即this指针,代表当前对象的地址。因此,如果运算符是一元运算符,则成员函数的定义不需要其他参数;如果运算符是二元运算符,则成员函数的定义只需要一个参数。

对于给定的选项:

  • 选项 A:Value operator-(Value, Value) 是错误的写法,它是一种非成员函数的写法,而不是成员函数的写法。
  • 选项 B:Value operator+(Value) 是一元运算符加法的正确写法,作为成员函数时不需要额外的参数。
  • 选项 C:Value operator*(int) 是乘法运算符的正确写法,作为成员函数时只需要一个额外的参数。
  • 选项 D:Value operator/(Value) 是除法运算符的正确写法,作为成员函数时只需要一个额外的参数。
发表于 2023-10-31 11:06:57 回复(0)
A选项,+是二元运算符,可以全局函数实现运算符重载,形参为二个。如果是成员函数实现运算符重载,形参一个。
B选项,是成员函数实现运算符重载,形参一个
D选项,是成员函数实现运算符重载,形参一个
C选项的运算符,有两种可能,这里应该是C选项存在歧义。
1、可能是“乘号”运算符,此时是二元运算符,可以全局函数实现运算符重载,形参为二个。如果是成员函数实现运算符重载,形参一个,有形参可知,形参参数就错误的。
2、可能是解引用运算符,此时是一元运算符,形参可以是占位符,也可以是无参。
发表于 2023-05-03 12:28:10 回复(0)
这什么垃圾题目。。。浪费时间
发表于 2022-11-01 10:41:26 回复(0)
直接屏蔽,垃圾题目
发表于 2022-05-27 00:20:40 回复(0)
A 选项不能将 + 重载为非成员函数吗?这样就可以使用两个参数了。
发表于 2021-11-24 09:49:28 回复(0)