计算机二级

有如下的运算符重载函数定义: double operator+(inti,intk){return double(i+k);} 但定义有错误,对这个错误最准确的描述是( )。A.+只能作为成员函数重载,而这里的+是作为非成员函数重载的B.两个int型参数的和也应该是int型,而这里将+的返回类型声明为doubleC.没有将运算符重载函数声明为某个类的友元D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符

题目

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

A.+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B.两个int型参数的和也应该是int型,而这里将+的返回类型声明为double

C.没有将运算符重载函数声明为某个类的友元

D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

A.+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B.两个int型参数的和也应该是int型,而这里将+的返回类型声明为double

C.没有将运算符重载函数声明为某个类的友元

D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符


D

第2题:

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

A.+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B.两个 int 型参数的和也应该是 int 型,而这里将+的返回类型声明为 double

C.没有将运算符重载函数声明为某个类的友元

D.C++已经提供了求两个 int 型数据之和的运算符+,不能再定义同样的运算符


D

第3题:

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

A.“+”只能作为成员函数重载,而这里的“+”是作为非成员函数重载的

B.两个int型参数的和也应该是int型,而这里将“+”的返回类型声明为double

C.没有将运算符重载函数声明为某个类的友元

D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符


正确答案:D

第4题:

下面重载乘法运算符的函数原型声明中错误的是( )

A.TestClass operator *(MyClass,double);

B.TestClass operator *(double,MyClass);

C.TestClass operator *(double,double);

D.TestClass operator *(MyClass,MyClass);


正确答案:C

第5题:

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

A.#NAME?

B.两个int型参数的和也应该是int型,而这里将+的返回类型声明为double

C.没有将运算符重载函数声明为某个类的友元

D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符


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

第6题:

( 33 )下列是重载乘法运算符的函数原型声明,其中错误的是

A ) MyClass operator*(double,double);

B ) MyClass operator*(double,MyClass);

C ) MyClass operator*(MyClass,double);

D ) MyClass operator*(MyClass,MyClass);


正确答案:A

第7题:

有如下的运算符重载函数定义: 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也不正确。运算符重载也是一种函数重载,两个重载的函数至少要在参数个数或参数类型上有所不同,否则C++编译器就无法区分它们。因此,题目中重载的+运算符的两个参数都是int类型,而C++已提供了求两个int型数据之和的运算符+,所以编译器无法区分应该调用哪一个,故会报错,所以应该选择D。

第8题:

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

A ) + 只能作为成员函数重载,而这里的 + 是作为非成员函数重载的

B ) 两个 int 型参数的和也应该是 int 型,而这里将 + 的返回类型声明为 double

C )没有将 运算符重载函数声明为某个类的友元

D ) C++ 已经提供了求两个 int 型数据之和的运算符 + ,不能再定义同样的运算符


正确答案:D

第9题:

有如下的运算重载函数定义:

Double operator+(int i, int k){return double(i+k);}

但定义有错误,对这个错误的最准确的描述是______。

A.+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B.两个int 型参数的和应该是int 型,而这里将+的返回类型声明为double

C.没有将运算符重载函数声明为某个类的友元

D.C++已经提供了求两个int 型数据之和运算符+,不能再定义同样的运算符


正确答案:B