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

题目

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

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

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

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

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


相似考题
更多“有如下的运算符重载函数定义:double operator+(int i,int k){return double (i+ k);}但定义有错 ”相关问题
  • 第1题:

    ( 14 )下面的函数定义是某函数模板能够生成的函数实例

    int square(int n) {return n*n;}

    double square(double n) {return n*n;}

    由此可知,该函数模板的定义是 【 15 】 。


    正确答案:

  • 第2题:

    intFunc(int,int);不可与下列哪个函数构成重载()

    A、intFunc(int,int,int);

    B、doubleFunc(int,int);

    C、doubleFunc(double,double);

    D、doubleFunc(int,double);


    参考答案:B

  • 第3题:

    已知:double A(double A) {return++a;}和int A(in A) {return++a;}是一个函数模板的两个实例,则该函数模板定义为【 】


    正确答案:templatetypename T> TA(TA) {return a++)
    templatetypename T> TA(TA) {return a++,) 解析:本题考核函数模板的定义。通过两个实例知道该例中只有一种数据类型,所以在定义模板时只需定义一个模板参数T。

  • 第4题:

    若类A和类B的定义如下: class A { int i,j; public: int geti () { return i; } }; class B : public A { int k; public: void make () { k=i*j; } }; 则上述定义中非法的语句是

    A.k=i*j;

    B.int k;

    C.return i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第5题:

    若类A和类B的定义如下: class A [ int i,j; public: int geti() { return i; } }; class B:public A { int k; public: void make() { k=i*j; } }; 则上述定义中非法的表达式是

    A.k=i*j

    B.int k;

    C.retum i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第6题:

    以下函数的功能是:求x的y次方,请填空。double fun(double x,int y){ int i; double z; for(i=1,z=x;i<y;i++) z=z*; return z;}


    正确答案:x
    本题中函数的功能是累积变量以求得变量的y次方,所以本题答案为x。

  • 第7题:

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

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

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

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

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


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

  • 第8题:

    下面哪个方法与题目中的不是重载方法public int max(int x,int y)

    A.public double max(double x,double y)

    B.publicintmax(intn,int k)

    C.publicintmax(intx,int y, int z)

    D.public double max(double n,double k)


    正确答案:B

  • 第9题:

    设i,j为类X定义的double型变量名,下列X类的构造方法中不正确的是

    A.X(double k){ i=k; }

    B.X( ){ i=6;}

    C.X(double m,double n){ i=m;j=n;}

    D.double X(double k){ i=k;return i;}


    正确答案:D
    解析:构造方法是给对象赋初值,所以没有返回值。

  • 第10题:

    已知一个函数的定义如下:double fun(int x,double y){⋯⋯}则该函数正确的函数原型声明为()

    • A、double fun(intx,doubley)
    • B、fun(int x,doubley)
    • C、double fun(int,double);
    • D、fun(x,y);

    正确答案:C

  • 第11题:

    以下正确的重载函数是()

    • A、int same(int,double);double same(int,double);
    • B、int same1(int,double);int same2(int,double);
    • C、int same(int=0);int same(int);
    • D、int same(int,double);int same(int,double,double);

    正确答案:D

  • 第12题:

    单选题
    以下正确的重载函数是()
    A

    int same(int,double);double same(int,double);

    B

    int same1(int,double);int same2(int,double);

    C

    int same(int=0);int same(int);

    D

    int same(int,double);int same(int,double,double);


    正确答案: D
    解析: 暂无解析

  • 第13题:

    若类A和类B的定义如下

    class A

    {

    int i,j;

    public:

    int geti( )

    {

    return i;

    }

    };

    class B:public A

    {

    int k:

    public:

    void make( )

    {

    k=i*j;

    }

    };

    则上述定义中非法的语句是

    A.k=i*j

    B.int k;

    C.return i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第14题:

    下列程序的输出是3,请填充程序中的空缺,使该行形成一个运算符重载函数的定义。

    include<iostream>

    using namespace std;

    class MyNumber{

    Int n;

    public:

    MyNumber(int k):n(k){}

    【 】 int()const{return n;}

    };

    int main(){

    MyNumber numl(3);

    cout<<int(numl);

    return 0;

    }


    正确答案:operator
    operator

  • 第15题:

    有如下的运算符重载函数定义: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)。

  • 第16题:

    若类A和类B的定义如下:includeclass A{int i*j;public:int geti(){return i;}};class

    若类A和类B的定义如下: #include<malloc.h> class A { int i*j; public: int geti() { return i; } }; class B: public A { int k; public: void make() { k=i*j; } ); 则上述定义中非法的表达式是( )。

    A.k=i*j;

    B.int k;

    C.return i;

    D.void make();


    正确答案:A
    解析:因为派生类不能访问基类的私有成员i和j(默认情况下,成员的属性为私有),所以表达式k=i*j是非法的。其余的访问权限都是许可的。

  • 第17题:

    若类A和类B的定义如下: class A { int i,j; public: int geti() { return i; } }; class B: public A { int k; public: void make() { k=i*j } }; 则上述定义中

    A.k=i*j;

    B.int k;

    C.return i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第18题:

    在类A中定义了方法fun(double,int),类B继承自类A,并定义了函数fun(double),这种方式称为(46)。若B中重新定义函数fun(double,int)的函数体,这种方式称为(47)。

    (62)

    A.重置

    B.重载

    C.代理

    D.委托


    正确答案:B

  • 第19题:

    若有定义:“double a=22;int i=0,k=18;”,则不符合C语言规定的赋值语句是( )。A.a=a++,i++;SXB

    若有定义:“double a=22;int i=0,k=18;”,则不符合C语言规定的赋值语句是( )。

    A.a=a++,i++;

    B.i=(a+k)<=(i+k);

    C.i=a%11;

    D.i=!a;


    正确答案:D

  • 第20题:

    在同一可访问区内有如下8个函数:

    ①double calculate(double x)

    ②double calculate(double x, double y);

    ③double calculate(double x. int y);

    ④double calculate(int x, double y);

    ⑤double calculate(int x);

    ⑥float calculate(float x);

    ⑦float calculate(double x);

    ⑧float calculate(int x,double y)。

    那么关于函数重载的说法中,不正确的是(63)。

    A.②③④⑤中任两个函数均构成重载

    B.①③构成重载

    C.②⑧肯定构成重载,⑥⑦也肯定构成重载

    D.④⑧构成重载


    正确答案:D
    解析:“overload”翻译过来就是:超载,或过载,或重载,即超出标准负荷。在日常生活中我们经常要清洗一些东西,比如洗车、洗衣服。尽管我们说话的时候并没有明确地说用洗车的方式来洗车,或者用洗衣服的方式来洗一件衣服,但是谁也不会用洗衣服的方式来洗一辆车,否则等洗完时车早就散架了。我们并不要那么明确地指出来就心知肚明,这就有重载的意思了。对于同一可访问区内被声明的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载。重载不关心函数的返回值类型。

  • 第21题:

    若有函数定义:double fun(int a[10]){...},则在对该函数进行原型声明时,错误的声明语句是()

    • A、double fun(int[])
    • B、double fun(intb[10])
    • C、double fun(inta)
    • D、double fun(int*a)

    正确答案:C

  • 第22题:

    如果已经定义了方法int f(bool b, int i),则以下方法中,哪一个不是合法的重载方法()。

    • A、double f(bool b, int i)
    • B、int f(double d, int i)
    • C、int f(bool b,int i, double d)
    • D、double f(bool d, int j)

    正确答案:D

  • 第23题:

    以下正确的函数定义形式是()。

    • A、double FUN(int x;int y)
    • B、double FUN(int x,int y)
    • C、double FUN(int x,int y);
    • D、double FUN(int x,y)

    正确答案:B