有如下的运算符重载函数定义: double operator +(int i,int k){ return double(i+k);} 但定义有错误,对这个错误最准确的描述是( )。

admin2017-06-16  37

问题 有如下的运算符重载函数定义:
  double operator +(int i,int k){ return double(i+k);}
  但定义有错误,对这个错误最准确的描述是(    )。

选项 A、+只能作为成员函数重载,而这里的+是作为非成员函数重载的
B、两个int型参数的和也应该是int型,而这里将+的返回类型声明为double
C、没有将运算符重载函数声明为某个类的友元
D、C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符

答案D

解析 此题考查的是运算符的重载。C++语言规定,不能作为非成员函数重载的运算符有=、[]、()、—>以及所有的类型转换运算符,故选项A错误:运算符重载对返回值类型没有限制,故选项B错误;C++并不强制要求非成员重载的运算符一定是某个类的友元,所以C选项错误:题目中重载的“+”运算符的两个参数都是int类型,而C++已经提供了求两个int型数据之和的运算符+,编译器无法区分应该调用哪一个,所以应该选择D选项。
转载请注明原文地址:https://kaotiyun.com/show/jmAp777K
0

最新回复(0)