设有复数类COMPLEX,在复数类中重载乘法运算符。 下列哪项是运算符重载的正确的声明格式?A.COMPLEX *(COMPLEX c1, COMPLEX c2);B.COMPLEX * (COMPLEX c2);C.COMPLEX operator * (COMPLEX c1, COMPLEX c2);D.COMPLEX operator * (COMPLEX c2);

题目

设有复数类COMPLEX,在复数类中重载乘法运算符。 下列哪项是运算符重载的正确的声明格式?

A.COMPLEX *(COMPLEX c1, COMPLEX c2);

B.COMPLEX * (COMPLEX c2);

C.COMPLEX operator * (COMPLEX c1, COMPLEX c2);

D.COMPLEX operator * (COMPLEX c2);


相似考题
更多“设有复数类COMPLEX,在复数类中重载乘法运算符。 下列哪项是运算符重载的正确的声明格式?”相关问题
  • 第1题:

    下列关于运算符重载的描述中,错误的是( )。

    A.可以通过运算符重载在C++中创建新的运算符

    B.赋值运算符只能重载为成员函数

    C.运算符函数重载为类的成员函数时,第一操作就是该类对象

    D.重载类型转换运算符时不需要声明返回类型


    正确答案:A
    解析:运算符的重载是针对C++中原有运算符进行的,不能通过重载创造新的运算符。

  • 第2题:

    下面关于自定义类的运算符重载的说法中,正确的是()。

    A.类友元形式重载的运算符,重载函数的参数个数与运算符的实际操作数个数相同

    B.类友元形式重载的运算符,重载函数中的this指针指向第一个运算数

    C.类友元形式重载的运算符,重载函数中可以直接访问类中的私有成员

    D.所有运算符都可以以类友元形式进行重载


    正确答案:AC

  • 第3题:

    下列关于运算符重载的叙述中,正确的是

    A.通过运算符重载,可以定义新的运算符

    B.有的运算符只能作为成员函数重载

    C.若重载运算符+,则相应的运算符函数名是+

    D.重载一个二元运算符时,必须声明两个形参


    正确答案:B
    解析:一般运算符重载可以采用成员函数方式或友元方式。但成员运算符(.),指向成员的指针,作用域运算符(::),条件运算符(?:)只能采用成员函数方式;重载运算符(+),对应的运算符函数名是operator+();重载一个二元运算符时,只需声明一个形参,左操作数毋须用参数输入,而是通过隐含的this指针传入。

  • 第4题:

    若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。 A.Data+(Data);SX

    若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。

    A.Data+(Data);

    B.Dataoperator+(Data);

    C.Data+operator(Data);

    D.operator+(Data.Data);


    正确答案:B
    B:【解析】重载运算符的函数一般格式如下:函数类型0perator运算符名称(形参列表)因此选B。

  • 第5题:

    下面是复数类complex的定义,其中作为友元函数重载的运算符“--”的功能是将参数对象的实部减1,然后返回对该对象的引用;请补充完整。

    class complex

    {

    private:

    int real;

    int imag;

    public:

    complex(int r=0,int i=0):real(r),imag(i){}

    void show ()

    {

    cout<<real<<(imag<0?"-":"+")<<imag<<'i';

    }

    ______;

    };

    complex& operator -- (complex &c)

    {

    c.real --;

    return c;

    }


    正确答案:friend complex& operator--(complex&)
    friend complex& operator--(complex&) 解析:本题考核运算符重载的定义。程序要填入的是运算符函数operator--在类complex中的声明,运算符“--”是作为友元函数重载的。根据题目给出的条件,易得到答案。

  • 第6题:

    若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。 A.Data+(DatA.;SXB

    若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。

    A.Data+(DatA.;

    B.Data operator+(DatA.;

    C.Data+operator(DatA.;

    D.operator+(Data,DatA.;


    正确答案:B
    根据重载加法运算符的格式,只有B选项正确。

  • 第7题:

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


    正确答案:C

  • 第8题:

    下面关于运算符重载中正确的是( )

    A.运算符函数的返回类型不能声明为基本数据类型

    B.C++的所有运算符都可以重载

    C.在类型转换符函数的定义中不需要声明返回类型

    D.通过运算符重载可以定义C++中没有的运算符


    正确答案:C
    解析:运算符函数的返回类型可以声明为基本数据类型,故选项A) 错误。“.、.*、->*、::、?”这五个运算符不可以重载,故选项B) 错误。在重载类型转换符时,由于运算符本身已经表示出返回值类型,因此不需要返回值类型的声明。运算符重载是针对C++中已有的运算符进行的,不可能通过重载创造出新的运算符,故选项D) 错误。

  • 第9题:

    下列关于运算符重载的描述中,()是正确的。

    • A、运算符重载可以改变运算数的个数
    • B、运算符重载可以改变优先级
    • C、运算符重载可以改变结合性
    • D、运算符重载不可以改变语法结构

    正确答案:D

  • 第10题:

    下列关于运算符重载的描述中,正确的是()。

    • A、运算符重载可以改变操作数的个数
    • B、运算符重载可以改变运算符的优先级
    • C、运算符重载可以改变运算符的结合性
    • D、运算符重载可以使运算符实现特殊功能

    正确答案:D

  • 第11题:

    单选题
    为类Matrix重载下列运算符时,只能作为Matrix类成员函数重载的运算符是(  )。
    A

    +

    B

    =

    C

    <<

    D

    ++


    正确答案: B
    解析:
    在C++中,运算符“=”、“[]”、“()”、“->”以及所有的类型转换运算符只能作为成员函数重载。

  • 第12题:

    单选题
    下列关于运算符重载的叙述中,正确的是(  )。
    A

    通过运算符重载机制可以为c++语言扩充新的运算符

    B

    运算符重载的作用是使已有的运算符作用于类的对象

    C

    重载运算符的操作数类型可以全部为基本类型

    D

    所有运算符都可以被重载


    正确答案: C
    解析:
    运算符重载就是赋予已有的运算符多重含义。通过重新定义运算符,使它能够用于特定类的对象执行特定的功能,这便增强了C++语言的扩充能力。运算符重载要注意以下3点:①不能重载的运算符包括“.”、“.*”、“->”、“::”、“?:”;②必须重载为成员函数的运算符包括“[]”,“()”,“->”,“=”;③在类成员函数中重载运算符是不允许返回引用的,会出现“返回局部变量的地址”警告。

  • 第13题:

    类对象的输入输出需在类中定义重载的提取运算符“>>”和插入运算符“<<”。()


    参考答案:正确

  • 第14题:

    下列关于运算符重载的描述中,错误的是( )。A.可以通过运算符重载在C++中创建新的运算符

    下列关于运算符重载的描述中,错误的是( )。

    A.可以通过运算符重载在C++中创建新的运算符

    B.赋值运算符只能重载为成员函数

    C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象

    D.重载类型转换运算符时不需要声明返回类型


    正确答案:A
    A。【解析】运算符的重载是针对C++中原有运算符进行的,不能通过重载创造新的运算符。

  • 第15题:

    多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但运算符[]只能作为类的______函数重载。


    正确答案:成员
    成员 解析:此题考查的是运算符重载。在C++中,“=”、“[]”、“()”、“->”以及所有的类型转换符只能作为成员函数重载,不能重载为友元函数。

  • 第16题:

    为类Matrix重载下列运算符号时,只能作为Matrix类成员函数重载的运算符是( )。

    A.+

    B.=

    C.<<

    D.++


    正确答案:B
    B。【解析】赋值运算符只能作为重载函数的成员函数,其他运算符都可以作为友元函数重载。

  • 第17题:

    关于运算符重载的表述中正确的是( )。

    A.C++已有的任何运算符都可以重载

    B.运算符函数的返回类型不能声明为基本数据类型

    C.在类型转换符函数的定义中不需要声明返回类型

    D.可以通过运算符重载来创建C++中原来没有的运算符


    正确答案:C
    解析: 此题考查的是运算符的有关概念。运算符重载是针对C++原有运算符进行的,不能通过重载创造新的运算符:除了“.”、“.*”、“->*”、“∷”、“?:”这5个运算符之外,其他运算符都可以重载;在类型转换符函数的定义中不需要声明返回类型,所以选项C)正确;运算符函数的返回值类型可以声明为基本数据类型。

  • 第18题:

    在重载运算符函数时,下面运算符必须重载为类的成员函数的是( )。

    A.+

    B.-

    C.++

    D.->


    正确答案:D
    解析:=(),[],->运算符不能够重载为类的友元函数。

  • 第19题:

    在重载运算符函数时,下面( )。运算符必须重载为类成员函数形式。

    A.+

    B.-

    C.++

    D.->


    正确答案:D

  • 第20题:

    下面关于运算符重载中正确的是( )。

    A.运算符函数的返回类型不能声明为基本数据类型

    B.C 的所有运算符都可以重载

    C.在类型转换符函数的定义中不需要声明返回类型

    D.通过运算符重载可以定义C 中没有的运算符


    正确答案:C

  • 第21题:

    下列对运算符重载的描述中,正确的是()

    • A、运算符重载可以改变结合性
    • B、运算符重载可以改变优先级
    • C、运算符重载可以改变操作数的个数
    • D、运算符重载不改变优先级和结合性

    正确答案:D

  • 第22题:

    单选题
    下列关于运算符重载的描述中,错误的是(  )。
    A

    可以通过运算符重载在C++中创建新的运算符

    B

    赋值运算符只能重载为成员函数

    C

    运算符函数重载为类的成员函数时,第一操作数是该类对象

    D

    重载类型转换运算符时不需要声明返回类型


    正确答案: B
    解析:
    运算符重载是针对C++中原有运算符进行的,不能通过重载创造新的运算符。

  • 第23题:

    单选题
    下列关于赋值运算符“=”重载的叙述中,正确的是(  )。
    A

    赋值运算符只能作为类的成员函数重载

    B

    默认的赋值运算符实现了“深层复制”功能

    C

    重载的赋值运算符函数有两个本类对象作为形参

    D

    如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符


    正确答案: C
    解析:
    A项正确,赋值运算符“=”只能作为成员函数重载;B项错误,默认的运算符只实现了“浅层赋值”,若要实现“深层复制”,必须重载赋值运算符;C项错误,默认的赋值操作就是同类对象之间对应成员的逐一赋值,而常见的真正需要重载赋值运算符的情况是:类中包含指向动态空问的指针;D项错误,一个类如果需要重载运算符=,通常也就需要定义自己特有的复制构造函数,反之亦然。

  • 第24题:

    单选题
    若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,下列原型声明正确的是(  )。
    A

    XV operator*(XV,XV);

    B

    XV*(XV);

    C

    operator*(XV);

    D

    XV operatorv*(XV);


    正确答案: A
    解析:
    “*”是一个二元运算符,在作为成员函数重载时参数表中只有一个参数,第一个操作数就是对象本身,以this指针的形式隐藏在参数表中,因此,声明形式为“XV operatorv*(XV);”。