当前位置:文档之家› 运算符重载知识题

运算符重载知识题

.《面向对象程序设计》习题班级:学号:姓名:名单序号:成绩:第7章运算符重载和多态性一、选择题(共30分,每题1分)1.下列运算符中,()运算符在C++中不能重载。

A.?:B.[]C. newD.++2.友元重载运算符obj1>obj2被C++编译器解释为()。

A.operator >(obj1,obj2) B.>(obj1,obj2)C.obj2.operator >(obj1) D.obj1.operator >(obj2)3.重载赋值操作符时,应声明为()函数。

A.友元B.虚C.成员D.多态4.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。

A. 作为友元函数重载的1元运算符B. 作为成员函数重载的1元运算符C. 作为友元函数重载的2元运算符D. 作为成员函数重载的2元运算符5.在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是()。

A. 该运算符是一个单目运算符。

B. 该运算符函数有一个隐含的参数this。

C. 该运算符函数是类的成员函数。

D. 该运算符函数是类的友元函数。

6. 关于运输符重载,下列表述中正确的是()。

A.C++已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型. C.在类型转换符函数的定义中不需要声明返回类型D.可以通过运算符重载来创建C++中原来没有的运算符7. C ++流中重载的运算符>>是一个()。

A. 用于输出操作的非成员函数B. 用于输出操作的成员函数C. 用于输入操作的非成员函数D. 用于输入操作的成员函数8. 若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。

A. Data +(Data);B. Data operator+(Data);C. Data +operator(Data);D. operator +(Data, Data);9. 下列运算符中哪些是不能够被重载的()。

A. .,.*,sizeof,::,?:B. ++,--,new,= =C. new,delete,>=,[ ]D. +,-,=,delete10. 在名为BigNumber类的类体中对运算符函数double进行如下声明:operator double(BigNumbe);函数声明中有一个明显的错误,这个错误就是()。

A.参数表中不应该有任何参数B.缺少对函数返回类型的说明C.参数声明中缺少参数变量D.函数声明中缺少函数体11. 下列关于运算符重载的描述中,正确的是()。

A. 运算符重载成为成员函数时,若参数表中无参数,重载是一元运算符B. 一元运算符只能作为成员函数重载C. 二元运算符重载成为非成员函数时,参数表中有一个参数D. C++中可以重载所有的运算符12. 在语句“cout<<’A’”中,cout是()。

A. 类名B. 函数名C. 对象名D. C++的关键字13.下面是重载为非成员函数的运算符的函数原型,其中错误的是()。

A.Fraction operator +(Fraction, Fraction)B.Fraction& operator =(Fraction&, Fraction)C.Fraction operator -(Fraction,Fraction)D.Fraction& operator *(Fraction, Fraction)14. 下列关于运算符重载的描述中,错误的是()。

A. 运算符重载不能改变操作数的个数、优先级、结合性和运算符的语法结构B. 所有的运算符都可以重载C. 运算符函数的调用必须使用关键字operatorD. 在C++语言中不可以通过运算符重载创造出新的运算符15. 如果表达式a>=b,中的“>=”是作为非成员函数重载的运算符,则可以等效地表示为()。

A. a.operator>=(b)B. a.operator>=(a)C. operator>=(a, b)D. a.operator>=(b, a)16. 下列有关运算符函数的描述中,错误的是()。

A. 运算符函数的名称总是以operator为前缀的B. 运算符函数的参数可以是对象C. 运算符函数只能定义为类的成员函数D. 在表达式中使用重载的运算符相当于调用运算符重载函数17. 将前缀运算符“--”重载为非成员函数,下列原型中,正确的是()。

A. Decr &operator- - (int);B. Decr operator- - (Decr &, int);C. friend Decr &operator- - (Decr &, int);D. friend Decr &operator- - (Decr &);18.下列关于C++预定义流对象的叙述中,正确的是()。

A.cin是C++预定义的标准输入流对象B.cin是C++预定义的标准输入流类C.cout是C++预定义的标准输入流对象D.cout是C++预定义的标准输入流类19.有如下类定义class MyClass{ public:________________________private:int data;};若要为MyClass类重载流输入运算符“>>”,使得程序中可以用“cin>>obj;”的形式改变MyClass 类的对象obj中数据成员data的值,则在下划线处的声明语句应为()。

A.friend istream& operator>>(istream& is, MyClass &a);B.friend istream& operator>>(istream& is, MyClass a);C.istream& operator>>(istream& is, MyClass &a);D.istream& operator>>(istream& is, MyClass a);20.若要在Viz类中将*重载为一元运算符,下列重载函数声明中肯定有错的是()。

A.Viz operator *();B.Viz operator *(Viz);C.int operator *(Viz);D.Viz operator *(Viz, Viz);21.已知一运算符函数没有参数,下列关于该运算符函数的表述中错误的是()。

A.该运算符函数是成员函数B.该运算符是一元运算符C.由于无参数,使用该运算符时不需要操作数D.该运算符不是后缀++或后缀--22.现需要将Matrix类对象使用的关系运算符“==”重载为成员函数,用于判断两个对象是否相等,以下正确且合理的函数声明是()。

A.Matrix& operator==(const Matrix &a);B.Matrix operator==(const Matrix &a);C.bool& operator==(const Matrix &a);D.bool operator==(const Matrix &a);23. 关于赋值运算符=的重载,下列表述中错误的是()。

A.=的重载函数必须且只能有一个参数B.一个类即使没有重载=,也可以用=为该类的对象赋值C.为了实现像“x=y=z;”这样的连续赋值,=的重载函数的返回值必须声明为引用D.=可以重载为一个类的友元函数24.下列运算符中,可以重载为类的友元函数的运算符是()。

.A.= B.( ) C.. D.<<25.有如下类的定义:class MyClass{public:MyClass(double d=0.0):val(d){ }//类型转换运算符double的定义private:double val;};若要使下列语句序列能够正常运行,下划线处的语句应为()。

MyClass x(2.1);cout<<double(x);A.operator double() const {return val;}B.friend operator double() const {return val;}C.double operator () const {return val;}D.friend double operator () const {return val;}26.若为类MyClass重载运算符“+”,下列声明中,错误的是()。

A.friend MyClass operator+(double, double);B.friend MyClass operator+(double, MyClass);C.friend MyClass operator+(MyClass, double);D.friend MyClass operator+(MyClass, MyClass);27.下列关于运算符重载的叙述中,正确的是()。

A.运算符重载的作用是使已有的运算符作用于类的对象B.通过运算符重载机制可以为C++语言扩充新的运算符C.重载运算符的操作类型可以全部为基本类型D.C++中已有的任何运算符都可以重载28. 运算符重载时以下性质一定会保持的是()。

A.返回值类型、操作数类型B.操作数类型、优先级C.优先级、操作数个数D.返回值类型、结合性29.下列关于运算符重载的描述中错误的是()。

A.不能通过运算符重载在C++中创建新的运算符B.赋值运算符=只能重载为成员函数C.运算符函数重载为类的成员函数时,第一操作数是该类对象D.重载类型转换运算符时,应声明返回值为void30.重载流插入运算符<<时,下列做法不合理的是()。

A.将运算符函数的返回值类型设为ostream &B.将运算符函数的第一个参数设为ostream &C.为运算符函数设置两个参数D.将运算符定义为类的成员函数二、填空题(共28分,每空1分)1.利用成员函数对二元运算符重载,其左操作数为,右操作数为。

2.对双目运算符而言,成员运算符函数带有参数,而友元运算符函数带有参数;对单目运算符而言,成员运算符函数参数,而友元运算符函数带参数。

3.重载运算符的函数不能有参数,否则就改变了运算符参数的个数。

4.对于用户自定义的类类型与其他数据类型之间的转换,通常有两种方法:通过进行类型转换;通过进行类型转换。

5.运算符重载函数一般采用两种形式:一是;二是。

相关主题