设c1和c2是类MyClass的对象,若将后缀运算符"++"作为类MyClass的友元函数重载,运算符"*"作为类MyClass的成员函数重载,则表达式c2*c1++等价于

admin2015-07-22  41

问题 设c1和c2是类MyClass的对象,若将后缀运算符"++"作为类MyClass的友元函数重载,运算符"*"作为类MyClass的成员函数重载,则表达式c2*c1++等价于

选项 A、c1.operaor++(0).operator*(c2)
B、c2.operator*(c1.operator++(0))
C、c2.operator*(operator++(c1,0))
D、operator*(operator++(c1,0),c2)

答案C

解析 友元函数不是类的成员函数,所以友元函数的调用不需要使用类对象;另外运算符重载不改变运算符的优先级,所以表达式c2*c1++先执行c1++;为了区分运算符的前缀和后缀形式,规定后缀式运算符函数接受一个额外的int型形参,使用时可以提供0作为形参的实参,所以c1++相当于operator++(c1, 0),c2*c1++相当于c2.operator*(operator++(c1, 0));答案为C。
转载请注明原文地址:https://kaotiyun.com/show/xNNp777K
0

最新回复(0)