c哈哈吧 关注:0贴子:2
  • 0回复贴,共1
选择题;226
运算与重载
1 下列各运算符中,(b)优先级最高。
A. +(双目) B. *(单目) C. <= D. *=
2 下列各运算符中,( a )优先级最低。
A.?: B. | C. || D. !=
3 运算符重载是对已有的运算符赋予多重含义,因此(c )。
A)可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义。
B)可以改变一个已有运算符的优先级和操作数个数。
C)只能重载C++中已经有的运算符,不能定义新运算符。
D)C++中已经有的所有运算符都可以重载。
4 有自定义类型A,其赋值函数的函数原型为 A operator =( const A&);有A类型的对象a, b, c,下列语句不合法的是(d )
A.a=b; B.a=a; C.a=b=c; D.(a=b)=c;
5 下列运算符中,哪一个不能重载(a )。
A.?: B.[ ] C.( ) D.++
6 下列运算符中,哪一个必须使用成员函数重载(a )
A.= B.<< C.-- D.++
7 有自定义类型A,其赋值函数的函数原型为 const A& operator =( const A&);有A类型的对象a, b, c,下列语句不合法的是( d )
A.a=b; B.a=a; C.a=b=c; D.(a=b)=c;
8 下列运算符中,哪一个可以使用全局函数重载( d )。
A.= B.[ ] C.( ) D.++
9 对于自定义类型来说,下列运算符中,需要重载才能使用的是(b )
A. = (赋值) ; B.[] (下标) ; C.& (取地址) ; D. , (逗号) ;
10 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,
并返回相加结果,则该成员函数的声明语句为: ( b )
A. AB AB::operator+(const AB&a,const AB & b) B.AB AB::operator+(const AB&a)
C.AB::operator+(AB a) D.AB & AB::operator+()
11 后缀--运算符的重载函数语法格式如下:
函数类型 operator--(形参,int){函数体}
则下面关于第2 个虚参的叙述中,正确的说法是( C )
(A)第2个参数必须给出参数名称
(B)第2个参数不能给出参数名称
(C)第2个参数必须是int型参数,其参数名可有可无
(D)第2个参数也可以是long型参数
12 设分数的类型定义如下:
struct Fraction
{
int nume;
int deno;
} ;
则下面关于取自身的单目运算符“+”的运算符重载函数中,最合适是( A )。
(A)Fraction operator +(const Fraction& x)
{return x;}
(B) Fraction operator +(Fraction &x)
{return x;}
(C)void operator +(Fraction x) 宥
{return x;}
(D)void operator +(Fraction &x)
{return x;}
13 下列说法中,正确的说法是   参考答案为:B
A.所有的运算符都能被重载
B.运算符被重载时,它们的优先级与结合性不会改变
C.当需要时,我们可以自定义一个运算符来进行重载
D.每个运算符都可以被重载成成员函数和友元函数
14 下列有关运算符重载的叙述正确的是 a 。
A.非静态成员函数重载运算符时带有this指针
B.友元函数重载运算符时带有this指针
C.成员函数与友元函数重载运算符时都不带有this指针
D.用成员函数或友元函数重载同一运算符时,两者的参数类型与参数个数相同
15 在下面的运算符重载函数的原型中,错误的是 a
A) Volume operator - (double, double);
B) double Volume::operator- (double);
C) Volume Volume: :operator - (Volume);
D) Volume operator - (Volume, Volume);
16 若通过类的成员函数和友元函数所实现的运算符重载的功能是一样的,下列说法正确的是 d 。
A.这两种函数的参数相同,函数体实现过程不同
B.编译器对这两种函数编译时所作的解释相同
C.这两种函数都带有this指针
D.友元函数比成员函数多一个参数
17 下列运算符中,不能被重载的是( c ) 。
A)&&B)!= C). D)++
18 下面程序中对一维坐标点类Point进行运算符重载
#include<iostream>
using namespace std;
class point {
public:
point (int val) {x=val;}
point& operator++(){x++;return *this;}
point operator++(int) {
point old=*this;++(*this);
return old;}
int GetX() const {return x;}
private:
int x;
};
int main(){
point a(10);
cout<<(++a).GetX();
cout<<a++.GetX();
return 0;
}
编译和运行情况是(b )
A)运行时输出1011B)运行时输出1111
C)运行时输出1112D)编译有错
19 下列关于运算符重载的叙述中,错误的是(B)。
A)有的运算符可以作为非成员函数重载
B)所有的运算符都可以通过重载而被赋予新的含义
C)不得为重载的运算符函数的参数设置默认值
D)有的运算符只能作为成员函数重载
20 如果表达式 a>=b 中的“>=”是作为非成员函数重载的运算符,则可以等效地表示为(C)。
A)a.operator>=(b) B)b.operatotr>=(a)
C)operator>=(a,b)D)operator>=(b,a)
类和对象
1 下面有关构造函数的描述中,正确的是( b)。
A. 构造函数可以带有返回值 B. 构造函数的名字与类名完全相同
C. 构造函数必须带有参数 D. 构造函数必须定义,不能缺省
2 在声明类时,下面的说法正确的是( c )。
A. 可以在类的声明中给数据成员赋初值
B. 数据成员的数据类型可以是register
C. private,public,protected可以按任意顺序出现
D. 没有用private,public,protected定义的数据成员是公有成员
3 在下面有关析构函数特征的描述中,正确的是(c )。
A. 一个类可以有多个析构函数 B. 析构函数与类名完全相同
C. 析构函数不能指定返回类型 D. 析构函数可以有一个或多个参数
4 构造函数是在( b)时被执行的。
A. 程序编译 B. 创建对象 C. 创建类 D. 程序装入内存
5 下面有关静态成员函数的描述中,正确的是( b )
A. 在静态成员函数中可以使用this指针
B. 在建立对象前,就可以为静态数据成员赋值
C. 静态成员函数在类外定义是,要用static前缀
D. 静态成员函数只能在类外定义
6 下面有关友员函数的描述中,真确的说法是( a )
A. 友员函数是独立于当前类的外部函数
B. 一个友员函数不可以同时定义为两个类的友员函数
C. 友员函数必须在类的外部进行定义
D. 在类的外部定义友员函数时必须加上friend关键字
7 友员的作用之一是( a )
A. 提高程序的运行效率 B. 加强类的封装
C. 实现数据的隐蔽性 D. 增加成员函数的种类
8 类中定义的成员默认为(b )访问属性。
A. public B. private C. protected D. friend
9 下列存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( a )合适。
A. 内联函数; B. 重载函数; C. 递归调用; D. 嵌套调用。
10 C++对C语言作了很多改进,下列描述中(d )使得C语言发生了质变,从面向过程变成了面向对象。
A. 增加了一些新的运算符; B. 允许函数重载,并允许设置缺省参数;
C. 规定函数说明必须用原型; D. 引进了类和对象的概念;
11 下列各种函数中,( c )不是类的成员函数。
A 构造函数 B 析构函数 C 友元函数 D 拷贝构造函数
12 通常,拷贝构造函数的形参是(c)
A.某个对象的值 B.某个对象的成员名
C.某个对象的引用名 D.某个对象的指针名
13 下面对静态数据成员的描述中,正确的是(c )
A 类的不同对象有不同的静态数据成员值
B 类的每个对象都有自己的静态数据成员
C静态数据成员是类的所有对象共享的数据
D 静态数据成员不能通过类的对象调用
14 假定AB为一个类,则执行AB x;语句时将自动调用该类的(b )
A.有参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值构造函数
15 假定AB为一个类,则( c )为该类的拷贝构造函数的原型说明。
A. AB(AB x); B. AB(int x); C. AB(const AB& x); D. void AB(AB& x);
16 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( a)。
A.类 B.对象 C.函数体 D.数据块
17假定一个类的构造函数为B(int x,int y){a=x--;b=a*y--;},则执行B x(3,5); 语句后,x.a和x.b的值分别为( c)
A、 3和5 B、 5和3 C、 3和15 D、20和5
18关于成员函数特征的下列描述中,(a)是错误的。
A、成员函数一定是内联函数; B、成员函数可以重载;
C、成员函数可以设置缺省参数值;  D、成员函数可以是静态的;
19 下列静态数据成员的特性中,(c)是错误的。
A) 说明静态数据成员时前边要加修饰符static
B) 静态数据成员要在类体外进行初始化
C) 静态数据成员不是所有对象所共用的
D)引用静态数据成员时,要在其名称前加<类名>和作用域运算符
20 f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用(b )是正确的。
A.p=f1 B. p=A::f1 C. p=A::f1() D. p=f1()
21 .关于静态成员的描述中,( b )是错误的。
A. 静态成员可分为静态数据成员和静态成员函数。
B. 静态数据成员定义后必须在类体内进行初始化。
C. 静态数据成员初始化不使用其构造函数。
D. 静态数据成员函数中不能直接引用非静态成员。
22 .下列关于构造函数的描述中,错误的是( d)。
A.构造函数可以设置默认的参数 B.构造函数在定义类对象的自动执行
C.构造函数可以是内联函数 D.构造函数不可以重载
23 如果类A被说明成类B的友元,则( d )。
A.类A的成员即类B的成员。
B.类B的成员即类A的成员。
C.类A的成员函数不得访问类B的成员 。
D.类B不一定是类A的友元。
24 声明友元的关键字是(c)
A.static B.mutable C.friend D.friends
25 面向对象程序设计的三大特性不包括( d )
A.封装性 B.继承性 C.多态性 D.健壮性
26 声明易变的成员变量,需要使用关键字( a )
A.mutable B.typename C.virtual D.template
27 类B的对象是类A的成员变量,定义A的对象A1,调用构造函数和析构函数的顺序是 ( d )
A.A的构造函数、B的构造函数、B的析造函数、A的析构函数
B.A的构造函数、B的构造函数、A的析构函数、B的析造函数
C.B的构造函数、A的构造函数、B的析造函数、A的析构函数
D.B的构造函数、A的构造函数、A的析构函数、B的析造函数
28 类B是类A的子类,A有整型成员变量a,B也有整型成员变量a,B的对象b如何分别访问两个成员变量( a)
A b.a和b.A::a B B::b. a和b.A::a C b.a和A::b.a D b.B::a和A::b.a
29 自定义类型中的哪种成员的访问不受限制(a )
A.public B.protected C.private D.以上都不是
30 将自定义类型的成员函数的实现书写在该类型的定义内时,该成员函数默认是( d )
A.递归函数 B.常成员函数 C.虚函数 D.内联函数
31 struct中成员,在没有访问修饰的情况下,默认访问方式是( c )
A private B protected C public D 不一定
32 构造函数初始化列表不能初始( c )
A const成员变量 B 引用成员变量 C static成员变量 D 普通成员变量
33 下列关于static成员函数,说法错误的是 ( c )
A. static成员函数只能访问同类中的static成员
B.static调用时不传递this指针
C.static成员函数只能通过对象调用
D.static成员函数与对象无关
34 下列关于this指针的正确选项是( c )
A该指针需要我们在使用时自己定义 B this指针可以被重新赋值
C this指针用来存放该类对象的地址 D this指针指向的数据类型是int型
35 整型变量t是类W的公有静态成员变量,下列程序的运行结果为( d )
W w1,w2; w2.t =5; w1.t =10; w1.t +=20;
cout<<w1.t<<”和”<<w2.t;
A 30和15 B 5和20 C 30和5 D 30和30
36 下列说法正确的是 ( b )
A.类的成员函数的实现不能访问类的private类型的成员变量;
B.类的对象可以调用它的public类型的成员变量;
C.类的对象可以调用它的任何类型的成员变量;
D.类的对象可以调用它的public和protected类型的成员变量;
37 设有类的定义如下:
class AAA
{
int x;
char s[12];
} ob;
则在VC++环境下,变量ob所占内存空间字节数是( C )字节
(A)14 (B)15 (C)16 (D)17
38 ( A )只能访问静态成员变量
(A)静态成员函数 (B)虚函数 (C)构造函数 (D)析构函数
39 面向对象程序设计中的数据隐藏指的是  d
A.输入数据必须输入保密口令
B.数据经过加密处理
C. 对象内部数据结构上建有防火墙
D.对象内部数据结构的不可访问性
40 拷贝构造函数的作用是   参考答案为:C
A.进行数据类型的转换
B.用对象调用成员函数
C.用对象初始化对象
D.用一般类型的数据初始化对象
41 下面对结构或类中成员的访问中,不正确的访问是  A
A.*pointer.salary; (其中pointer为指向类对象的指针)
B.pointer->salary;
C.x=worker.salary; (其中worker为具有类类型的对象)
D.Location &rA=A1;int x=rA.GetX(); (Location为已定义的类,A为对象)
42 在C++语言中,数据封装要解决的问题是( D )
A. 数据的规范化 B. 便于数据转换
C. 避免数据丢失 D. 防止不同模块之间数据的非法访问
43 对类的构造函数和析构函数描述正确的是( A )
A. 构造函数可以重载,析构函数不能重载
B. 构造函数不能重载,析构函数可以重载
C. 构造函数可以重载,析构函数也可以重载
D. 构造函数不能重载,析构函数也不能重载
44 析构函数被调用的时间点是( B)
A.对象被创建时B.对象被销毁时
C.不会被调用 D.主函数被调用时
45 对象的构造函数调用顺序取决于( B )
A.对象成员在初始化列表中给出的顺序
B.对象成员在类中声明的顺序
C.对象成员与在初始化列表中顺序和类中声明顺序均有关
D.随机顺序
46 下列对静态成员函数描述正确的是( B )
A.静态成员函数中可使用1个this指针
B.静态成员函数中不能使用this指针
C.静态成员函数中可使用多个this指针
D.静态成员函数中只可使用1个that指针
47 友元的声明可出现在( D )
A.类的私有部分B.类的公有部分
C.类的保护部分D.类的任何部分
48 假设Sample是个类,则语句“Sample a[2],*p[3];”调用构造函数的次数为( b)
A.0 B.2 C.3 D.5
49 关于面向对象的程序设计方法,下列说法正确的是d
A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理
B)“多态性”指的是对象的状态会根据运行时要求自动变化
C)基类的私有成员在派生类的对象中不可访问,也不占内存空间
D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用
50 有以下类定义
class MyClass
{
public:
MyClass(){cout<<1;}
};
则执行语句MyClass a, b[2], *p[2];后,程序的输出结果是 b
A)11 B)111 C)1111 D)11111
51 关于友元,下列说法错误的是 a
A)如果类A是类B的友元,那么类B也是类A的友元
B)如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员
C)友元关系不能被继承
D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元


IP属地:辽宁1楼2017-06-21 15:59回复