国家二级C++机试(运算符重载、模板和C++流)模拟试卷1
选择题
1.运算符重载是对已有的运算符赋予多重含义,因此( )。(C)
A. 可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
B. 可以改变一个已有运算符的优先级和操作数个数
C. 只能重载C++中已经有的运算符,不能定义新运算符
D. C++中已经有的所有运算符都可以重载
解析:此题考查的是运算符重载。运算符重载是针对C++语言原有的运算符进行的,并不能创造新的运算符。
2.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:此题考查的是运算符重载的概念。C++语言规定,“.”、’’*’’、’’->*’’、“::”和“?:”这五个运算符不能被重载,故选项A错误;运算符函数的返回类型由该运算符所组成的表达式的值的类型来决定,故选项B说法是错误的:运算符重载是针对原有运算符,并不能通过重载创造出新的运算符,故选项D错误。
3.通过运算符重载,可以改变运算符原有的( )。(A)
A. 操作数类型
B. 操作数个数
C. 优先级
D. 结合性
解析:此题考查的是运算符重载。运算符重载具有保持其原有的操作数个数、优先级、语法结构和结合性不变的特性。故本题选项A正确。
4.下列运算符中,不能被重载的是( )。(C)
A. &&
B. !=
C. .
D. ++
解析:此题考查的是运算符重载。在C++中,只有.、*、->*、::、?:这五个运算符不能重载。
5.下列关于运算符重载的描述中,正确的是( )。(A)
A. 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
B. 一元运算符只能作为成员函数重载
C. 二元运算符重载为非成员函数时,参数表中有一个参数
D. C++中可以重载所有的运算符
解析:此题考查的是运算符的重载。运算符重载为成员函数时,形参个数一般为运算符元数减l:重载为非成员函数时,形参个数一般和运算符元数相等。所以二元运算符重载为非成员函数时,参数表中应有两个参数,C选项错误;运算符重载为成员函数,若参数表中无参数,重载的是一元运算符,选项A正确:一元运算符中,“.”(取负)、“++”、“–”等均可重载为成员函数;C++语言中,“.”、“.*”、“->*”、“::”、“?:”五个运算符不能重载。
6.下列有关运算符重载的叙述中,正确的是( )。(A)
A. 运算符重载是多态性的一种表现
B. C++中可以通过运算符重载创造新的运算符
C. C++中所有运算符都可以作为非成员函数重载
D. 重载运算符时可以改变基结合性
解析:此题考查的是运算符重载。C++中运算符重载是多态性的一种表现;运算符重载是针对C++原有运算符进行的,不可能通过重载创造出新的运算符;除了“.”、“.*”、“->”、“::”、“?:”这五个运算符外,其它运算符都可以重载;但“=”“[]”“->”及所有的类型转换运算符只能作为成员函数重载,运算符重载不可改变其结合性、操作数个数和优先级。
7.下列关于运算符重载的叙述中,错误的是( )。(B)
A. 有的运算符可以作为非成员函数重载
B. 所有的运算符都可以通过重载而被赋予新的含义
C. 不得为重载的运算符函数的参数设置默认值
D. 有的运算符只能作为成员函数重载
解析:“运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造新的运算符。除了*,.*,-〉*,::,?:,.这五个运算符以外,其他运算符都可以重载。
8.运算符重载时不需要保持的性质是( )。(B)
A. 操作数个数
B. 操作数类型
C. 优先级
D. 结合性
解析:运算符重载应该体现为原有运算符的功能在新的数据类型上的延伸。重载的运算符保持原有运算符的操作个数、优先级和结合性三个最基本的特征。
9.下列关于运算符函数的描述中,错误的是( )。(C)
A. 运算符函数的名称总是以operator为前缀
B. 运算符函数的参数可以是对象
C. 运算符函数只能定义为类的成员函数
D. 在表达式中使用重载的运算符相当于调用运算符重载函数
解析:C++把重载的运算符视为特殊的函数,称为运算符函数。编译系统能够依据使用运算符的不同环境,即参数(操作数)的数量或类型的差异,区分同一运算符的不同含义。运算符函数作为非成员函数时,所有的操作数必须出现在参数表中。
10.下列关于运算符重载的描述中,错误的是( )。(C)
A. ::运算符不能重载
B. 类型转换运算符只能作为成员函数重载
C. 将运算符作为非成员函数重载时必须定义为友元
D. 重载[]运算符应完成“下标访问”操作
解析:C++把重载的运算符视为特殊的函数,称为运算符函数。“运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造出新的运算符。
11.下列关于运算符重载的描述中,错误的是( )。(A)
A. 可以通过运算符重载在C++中创建新的运算符
B. 赋值运算符只能重载为成员函数
C. 运算符函数重载为类的成员函数时,第一操作数是该类对象
D. 重载类型转换运算符时不需要声明返回类型
解析:运算符重载应尽可能保持其原有的基本语义,而不是创建新的运算符。重载的运算符应该体现为原运算符的功能在新数据类型上的延伸,它的使用应当使程序中算法的表达式显得更流畅、自然,使阅读程序的人在不借助于其他说明资料的情况下就能够正确理解。
12.下列关于运算符重载的叙述中,正确的是( )。(B)
A. 通过运算符重载机制可以为C++语言扩充新的运算符
B. 运算符重载的作用是使已有的运算符作用于类的对象
C. 重载运算符的操作数类型可以全部为基本类型
D. 所有运算符都可以被重载
解析:运算符重载就是赋予已有的运算符多重含义。通过重新定义运算符,使它能够用于特定类的对象执行特定的功能,这便增强了C++语言的扩充能力。运算符重载要注意以下3点:①不能重载的运算符包括::,.,.*,?:②必须重载为成员函数的运算符包括[],(),->,=;③在类成员函数中重载运算符是不允许返回引用的,会出现“返回局部变量的地址”警告。
13.下列关于运算符重载的叙述中,正确的是( )。(B)
A. 通过运算符重载,可以定义新的运算符
B. 有的运算符只能作为成员函数重载
C. 若重载运算符+,则相应的运算符函数名是+
D. 重载一个二元运算符时,必须声明两个形参
解析:此题考查的是运算符重载。C++中,“=”、“[]”、“()”、“->”以及所有的类型转换符只能作为成员函数重载,故B选项正确;运算符重载只是赋予已有的运算符多重含义,并不是定义新的运算符;运算符函数的函数名就是在运算符前加上关键字operator。
14.已知在一个类体中包含如下函数原型:VOLUME operator-(VOLLIME)const;,下列关于这个函数的叙述中,错误的是( )。(B)
本文档预览:3600字符,共8587字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载