首页 > 试题广场 >

友元运算符 a++ 被C++编译器解释为:

[单选题]
友元运算符 a++ 被C++编译器解释为:
  • operator++(a)
  • a.operator++(0)
  • operator++(a,0)
  • a.operator++()
常用
a+b operator+(a,b) a.operator+(b)
-a operator-(a) a.operator-()
a++ operator++(a,0) a.operator++(0)
–a operator–(a) a.operator–();
编辑于 2020-03-08 18:33:18 回复(2)
为什么是第二个,友元的后置++,这么可能是成员函数,按照友元来重载后置++,代码是:
friend Int operator++(Int& a, int) { // 后置++ 这个参数 int 是必须的
	Int tmp = a;
	a.m++;
	return tmp;
}
怎么都应该选 C 啊

发表于 2019-09-01 18:08:10 回复(5)
没学过
发表于 2022-04-11 16:25:52 回复(0)
外部看到的a++:operator++(a,0)
本类看到的a++:a.operator++(0)

发表于 2023-05-15 20:03:53 回复(0)
运算符重载的本质,就是函数重载,把operator++(或者++)当做一个函数名调用。
方式只有两种:1.写成类的成员函数,就是D选项
                          2.写成友元函数,就是C选项
某些运算符有限制,比如流运算符>> << 必须重载为友元函数
发表于 2023-12-03 09:32:10 回复(0)
常用
a+b operator+(a,b) a.operator+(b)
-a operator-(a) a.operator-()
a++ operator++(a,0) a.operator++(0)
–a operator–(a) a.operator–();
发表于 2022-07-26 15:46:15 回复(0)
和11层的兄弟一样的想法,不明白为什么选第二个。
发表于 2022-06-02 11:48:36 回复(0)