首页 > 试题广场 >

在重载运算符函数时,下面哪一个运算符必须重载为类成员函数形式

[单选题]
在重载运算符函数时,下面()运算符必须重载为类成员函数形式()
  • +
  • -
  • ++
  • ->
推荐
答案 :D
只能使用成员函数重载的运算符有:=、()、[]、->、new、delete。
编辑于 2015-01-26 20:20:17 回复(6)
不能重载,5个: ". "           " .* "            "::"                  "sizeof"                   "?:"
                 前2个不能被重载是保证能正常访问成员,域运算和sizeof不能被重载是因为运算对象是类而不是对象

只能使用成员函数重载,4个: "="           "[]"               "->"                  "()"
                只能使用成员函数重载是为了防止出现: 1 = x, 1[x],   1->x,  1(x)这样的合法语句
发表于 2018-06-07 10:36:32 回复(1)
详细解析:http://blog.csdn.net/zgl_dm/article/details/1767201

在多数情况下,将运算符重载为类的成员函数和类的友元函数都是可以的。但成员函数运算符与友元函数运算符也具有各自的一些特点:
( 1 ) 一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好重载为类的友元函数。

(
2 ) 以下一些双目运算符不能重载为类的友元函数: = 、()、[]、 ->

(
3 ) 类型转换函数只能定义为一个类的成员函数而不能定义为类的友元函数。

(
4 ) 若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好。

(
5 ) 若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数。

(
6 ) 当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一 个类对象(或者是对该类对象的引用)。如果左边的操作数必须是一个不同类的对象,或者是一个内部 类型的对象,该运算符函数必须作为一个友元函数来实现。

(
7 ) 当需要重载运算符具有可交换性时,选择重载为友元函数。
编辑于 2016-10-09 14:21:19 回复(1)

答案:D

=、()、[]、->、new、delete只能重载为成员函数,因为  C++不允许全局重载这几个操作符 .C++ 也没有提供调用对象作为参数放进去 .

发表于 2015-01-26 10:29:33 回复(0)
D
大多数操作符可以定义为成员函数或非成员函数。当操作数为成员函数时,他的第一个操作数隐式绑定到this指针。有些操作符(包括赋值操作符)必须是定义自己的类的成员。因为赋值必须是类的成员,所以this绑定到指向左操作数的指针。因此,赋值操作符接受单个形参,且该形参是同一类类型的对象。右对象一般作为const 引用传递。
[]、()、->、=这几个运算符如果要重载,必须重载为成员函数
发表于 2015-01-19 20:52:26 回复(0)
在多数情况下,将运算符重载为类的成员函数和类的友元函数都是可以的。但成员函数运算符与友元函数运算符也具有各自的一些特点: 1 一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好重载为类的友元函数。2 以下一些双目运算符不能重载为类的友元函数:=、()、[]、-> new delete。 3 类型转换函数只能定义为一个类的成员函数而不能定义为类的友元函数。 4 若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好。 5 若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数。 6 当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一 个类对象(或者是对该类对象的引用)。如果左边的操作数必须是一个不同类的对象,或者是一个内部 类型的对象,该运算符函数必须作为一个友元函数来实现。 7 当需要重载运算符具有可交换性时,选择重载为友元函数。
发表于 2021-01-31 16:34:51 回复(0)
只能使用成员函数重载的运算符有:=、()、[]、->、new、delete。
发表于 2016-12-22 23:34:21 回复(0)
运算符重载遵循的规则:
1.sizeof()、.成员运算符、.*成员指针运算符、::域运算符、?:条件判断运算符不能被重载
2.重载不能改变运算符的优先级和结合律
3.->箭头运算符、[]下标运算符、()函数调用运算符、=赋值运算符只能以成员函数的形式重载
4.全局函数重载运算符使之具有对称性
发表于 2022-04-20 11:23:56 回复(0)
只能使用成员函数重载的运算符有:= [] () -> new delete
发表于 2022-03-11 20:42:12 回复(0)
重载后置++符号时,可以使用该语句 friend Object operator ++(Object&,int);
重载前置++符号时,使用语句friend Object& operator ++(Object&);
发表于 2019-12-18 19:22:00 回复(0)
=赋值操作符,()函数调用操作符,[]下标操作符,->通过指针访问类成员的操作符只能通过成员函数重载。(<<C++ Primer Plus中文版(第五版)>> P342)
发表于 2019-11-26 15:10:44 回复(0)

重载运算符相关的知识

发表于 2019-04-07 15:33:17 回复(0)
必须重载为类成员函数的运算符有:=、->、()、[],而new和delete仅是建议。
编辑于 2018-11-29 21:48:07 回复(0)
new 和 delete 一般重载为成员函数 但是非必须
发表于 2017-09-16 21:20:33 回复(0)
除了重载为类成员函数,还能重载为类友元函数
发表于 2017-08-28 22:27:08 回复(0)
D 四种可能 = ,(),【】, ->,new和delete
编辑于 2017-02-10 14:00:53 回复(0)
D
发表于 2015-05-20 18:18:54 回复(0)
D
与指针操作区分
发表于 2015-04-09 14:57:30 回复(0)
D  重载成员函数
发表于 2015-04-07 20:51:09 回复(0)