1. 关于函数模板,描述错误的是( C)
A) 函数模板必须由程序员实例化为可执行的函数模板
B) 函数模板的实例化由编译器实现
C) 一个类定义中,只要有一个函数模板,则这个类是类模板
D) 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化
2. 下列的模板说明中,正确的是( A )
A) template <typename T1, typename T2>
B) template <class T1, T2>
C) template <class T1; class T2>
D) template <typename T1; typename T2>
3. 假设有函数模板定义如下:
Template <typename T>
Max(T a, T b, T &c)
{ c=a+b; }
下列选项正确的是( A )
A) float x,y; float z; Max(x,y,z);
B) int x,y,z; Max(x,y,x+y+z);
C) int x,y; float z; Max(x,y,z);
D) float x; int y, z; Max(x,y,z);
4. 关于类模板,下列描述错误的是( D)99999999999999999999999999
A) 一个普通基类不能派生类模板
B) 类模板从普通类派生,也可以从类模板派生
C) 根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
D) 函数的类模板参数须通过构造函数实例化
5. 建立类模板对象的实例化过程为( C )
A) 基类à派生类 B) 构造函数à对象
C) 模板类à对象 D) 模板类à模板函数
6. 在C++中,容器是一种( D)
A) 标准类 B) 标准对象 C) 标准函数 D) 标准类模板
99999
7.关于类模板描述不正确的是(B).
A.它的存在不代表一个具体的、实际的类,而是代表一类的类
B.根据它可以定义多个对象
A.它的存在不代表一个具体的、实际的类,而是代表一类的类
B.根据它可以定义多个对象
C.它可以使类中的某些数据取任意类型
D.根据它可以产生一系列类
D.根据它可以产生一系列类
1.下列关于运算符重载不正确的是( )
A.运算符重载不能改变运算符的操作数个数
B.运算符重载不能改变运算符的优先级
C.运算符重载不能改变运算符的结合性
D.运算符重载能改变对预定义类型数据的操作方式
【答案】D
2.对于重载的运算符>>,它是一个( )
A.用于输入的友元函数
B.用于输入的成员函数
C.用于输出的友元函数
D.用于输出的成员函数
【答案】A
3.在重载一个运算符时,如果其参数表中有一个参数,则该运算符是( )
A.一元成员运算符
B.二元成员运算符
C.一元友元运算符
D.选项B和选项C都可能
【答案】D
4.下列运算符中,只能作为类成员函数重载的是(B)。
A.+ B.= C.<< D.++
5.下列运算符中,不能重载的是(A)。
A.?: B.+ C.- D.<=
6.设A为test类的对象且赋有初值,赋值符号已经重载,则语句test B=A;表示(C )。
A.语法错
B.为对象A定义一个别名
C.将对象A复制给对象B
D.仅说明B和A属于同一个类
7、若为类ABC重载前增1运算符++,应在类体中将其声明为( B )。
A.语法错
B.为对象A定义一个别名
C.将对象A复制给对象B
D.仅说明B和A属于同一个类
7、若为类ABC重载前增1运算符++,应在类体中将其声明为( B )。
A.ABC & operator ++() B. ABC & operator ++(int)
C.friend ABC & operator ++() D. friend ABC & operator ++(int)
8.若表达式y@x中,“@”作为成员函数重载的运算符,则表达式还可以表示为:C
A.x.operator@(y) B.operator@(x,y)
C.y.operator@(x) D.operator@(y,x)
9、若要重载,则下列各组运算符中必须作为类成员函数重载的是:D
A.+和= B.=和<< C.==和<< D.=和[]
10、不能作为重载函数的调用的依据是:C
A.参数个数
B.参数类型
C.函数类型
D.函数名称
11、通过运算符重载,可以改变运算符原有的( A )。
A.操作数类型
B.操作数个数
C.优先级
D.结合性
A.参数个数
B.参数类型
C.函数类型
D.函数名称
11、通过运算符重载,可以改变运算符原有的( A )。
A.操作数类型
B.操作数个数
C.优先级
D.结合性
12、在C++中,用于实现运行时多态性的是( D )
A.内联函数
B.重载函数
C.模板函数
D.虚函数
13、下列关于运算符重载的叙述中,正确的是( B )
A.通过运算符重载,可以定义新的运算符
B.有的运算符只能作为成员函数重载
C.若重载运算符+,则相应的运算符函数名是+
D.重载一个二元运算符时,必须声明两个形参
A.内联函数
B.重载函数
C.模板函数
D.虚函数
13、下列关于运算符重载的叙述中,正确的是( B )
A.通过运算符重载,可以定义新的运算符
B.有的运算符只能作为成员函数重载
C.若重载运算符+,则相应的运算符函数名是+
D.重载一个二元运算符时,必须声明两个形参
14.在下列运算符中,不能重载的是(B)
A.! B. sizeof C. new D. delete
3.2 不能用友员函数重载的是(A)。
A.= B.== C.<= D.++
15.下列函数中,不能重载运算符的函数是(B)。
A.成员函数 B.构造函数 C.普通函数 D.友元函数
16.如果表达式++i*k时中的”++”和”*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为(B)。
A.operator*(i.operator++(),k) B.operator*(operator++(i),k)
C.i.operator++().operator*(k) D.k.operator*(operator++(i))
17.已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;下列关于这个函数的叙述中,错误的是(B )。
A.这是运算符-的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符
C.这是一个成员函数
D.这个函数不改变数据成员的值
18.在表达式x+构造函数可以被重载y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是(C )。
A.operator+有两个参数,operator*有两个参数
B.operator+有两个参数,operator*有一个参数
C.operator+有一个参数,operator*有两个参数
D.operator+有一个参数,operator*有一个参数
判断题:
1. 重载流操作符<<和>> 时,如果第一个参数的类型为ostream 和istream,那么这个重载函数既可以用于标准输入输出流,也可以用于文件流上。
对,ostream 和istream是标准输入输出流、文件流、字符串流的基类
2. 在同一个类中,可以定义重载的成员函数 void f(int);和virtual void f(int); 。
错,这属于重复定义
3. 重载运算符<<和>>,只能作为友元函数。 对
4. 定义类的非成员函数运算符重载,必须将它声明为友元函数。 错
5. 赋值运算符只能作为成员函数进行重载。 对
6. 用成员函数定义运算符“+”重载,有两个参数。 错
4.函数重载要求重载的函数必须函数名和原函数一样的。【8】
淘宝精品
【参考答案】
【8】函数名
填空题
15、在C++语言中,访问一个对象的成员所用的运算符是 【11】 ,访问一个指针所指向的对象的成员所用的运算符是 【12】 。
16、将x+y中的+运算符用友元函数重载应写为【11】 。
15、在C++语言中,访问一个对象的成员所用的运算符是 【11】 ,访问一个指针所指向的对象的成员所用的运算符是 【12】 。
16、将x+y中的+运算符用友元函数重载应写为【11】 。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论