一、单项选择题[2.0分/题]??( 得分率: 65.6%??平均得分: 27.55 )
1、以下有关类的说法,不正确的是
选项A:类是一种用户自定义的数据类型
选项B:只有类中的成员函数或类的友元函数才能存取类的私有数据
选项C:在类中,如果不做特殊说明,所有数据均为私有数据
选项D:在类中,如果不做特殊说明,所有成员函数均为公有成员函数试题答案:D
2、以下不是构造函数特征的是
选项A:构造函数的函数名与类名相同
选项B:构造函数可以重载
选项C:构造函数可以设置默认参数
选项D:构造函数必须指定类型说明
试题答案:D
?3、以下有关类和对象的叙述,不正确的是
选项A:任何一个对象都属于一个具体的类
选项B:类与对象的关系和数据类型与变量的关系相同
选项C:类的数据成员不允许是另一个类的对象
选项D:一个类可以被实例化多个对象
试题答案:B
4、设有以下类的定义:
class Ex
{ int x;
public :
void setx(int t=0);
};
若在类外定义成员函数setx(),以下定义形式正确的是
选项A:void setx(int t){…}
选项B:void Ex:: setx(int t){…}
选项C:Ex::void setx(int t){…}
选项D:void setx(){…}
试题答案:B
5、以下对派生类的描述中不正确的是
选项A:一个派生类可以作为另一个派生类的基类
选项B:一个派生类可以有多个基类
选项C:具有继承关系时,基类成员在派生类中的访问权限不变
选项D:派生类的构造函数与基类的构造函数有成员初始化参数传递关系试题答案:C
6、设有基类定义:
class cbase
{ private: int a;
protected: int b;
public: int c;
};
派生类采用何种继承方式可以使成员变量b成为自己的私有成员
选项A:私有继承
选项B:保护继承
选项C:公有继承
选项D:私有,保护,公有均行
试题答案:A
7、设有cbase为基类,cderived是cbase的派生类,且有以下定义:
cbase a1,*b1;
cderived aa1,*bb1;
则以下语句不合语法的是
选项A:b1=bb1
选项B:a1=aa1
选项C:b1=&aa1
选项D:bb1=(cbase*)b1
试题答案:D
8、下面的哪个保留字不能作为函数的返回类型?
选项A:void
选项B:int
选项C:new
选项D:long
试题答案:C
9、假定AB为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构造函数的次数为
选项A:3
选项B:4
选项C:6
选项D:9
试题答案:B
10、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为
选项A:AB operator+(AB& a , AB& b)
选项B:AB operator+(AB& a)
选项C:operator+(AB a)
选项D:AB& operator+( )
试题答案:B
11、假定AB为一个类,则该类的拷贝构造函数的声明语句为
选项A:AB&(AB x)
选项B:AB(AB x)
选项C:AB(AB&)
选项D:AB(AB* x)
试题答案:C
12、对于结构中定义的成员,其隐含访问权限为
选项A:public
选项B:protected
选项C:private
选项D:static
试题答案:A
13、关于类和对象不正确的说法是
选项A:类是一种类型,它封装了数据和操作
选项B:对象是类的实例
选项C:一个类的对象只有一个
选项D:一个对象必属于某个类
试题答案:C
14、在类定义的外部,可以被访问的成员有
选项A:所有类成员
选项B:private或protected的类成员
选项C:public的类成员
选项D:public或private的类成员
试题答案:C
*15、关于this指针的说法错误的是
选项A:this指针必须显示说明
选项B:当创建一个对象后,this指针就指向该对象
选项C:成员函数拥有this指针
选项D:静态成员函数不拥有this指针
试题答案:A
16、声明一个类的对象时,系统自动调用构造函数,撤消对象时,系统自动调用(?)函数选项C:析构函数
17、下面对构造函数的不正确描述是
选项A:系统可以提供默认的构造函数
选项B:构造函数可以有参数,所以可以有返回值
选项C:构造函数可以重载
选项D:构造函数可以设置默认参数
试题答案:B
18、下面对析构函数的正确描述是
选项A:系统不能提供默认的析构函数
选项B:析构函数必须由用户定义
选项C:析构函数没有参数
选项D:析构函数可以设置默认参数
试题答案:C
*19、对静态成员的不正确描述是
选项A:静态成员不属于对象,是类的共享成员
选项B:静态数据成员要在类外定义和初始化
选项C:调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
选项D:非静态成员函数也可以操作静态数据成员
试题答案:C
20、下面选项中,不是类的成员函数为
选项C:友元函数
二、完型填空[10.0分/题]??( 得分率: 34.04%??平均得分: 6.81 )
1、 #include
class BASE1 {
public:
BASE1(int x)
{ cout<
~BASE1() {
cout<<"Destructing base1 object.\n"; }
};
class BASE2 {
public:
BASE2(int x) {
cout<
~BASE2() {
cout<<"Destructing base2 object.\n"; }
};
class DERIVED:public BASE2,public BASE1 {
public:
DERIVED(int x,int y):BASE1(x),BASE2(y)
{ cout<<"Constructing derived object. \n"; }
~DERIVED() {
cout<<"Destructing derived object.\n"; }
};
int main()
{ DERIVED obj(10,20);
return 0; }
程序输出:
—————1———————
10->Constructing base1 object.
——————2——————
—————3———————
——————4——————
Destructing base2 object.
共四个选项,1,2,3,4,各备选项均相同
A:Destructing base1 object.
B:20->Constructing base2 object.
C:Destructing derived object.
D:Constructing derived object.
试题答案:1B,2D,3C,4A
??
一、单项选择题[2.0分/题]??( 得分率: 58.5%??平均得分: 24.57 )(2010期中考B卷)
1、下面选项中,不是类的成员函数为
选项A:构造函数
选项B:析构函数
选项C:友元函数
选项D:缺省参数的构造函数
试题答案:C
2、下面对友元的错误描述是
选项A:关键字friend用于声明友元
选项B:一个类的成员函数可以是另一个类的友元
选项C:友元函数访问对象的成员不受访问特性影响
选项D:友元函数通过this指针访问对象成员
试题答案:D
3、在C++中,类与类之间的继承关系具有
选项A:自反性
选项B:对称性
选项C:传递性
选项D:反对称性
试题答案:C
4、下列关于类的继承描述中,错误的是
选项A:派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
选项B:派生类也是基类,但基类不一定具有派生类的全部属性和方法
选项C:继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
选项D:一个基类可以有多个派生类,一个派生类可以有多个基类
试题答案:A
5、下面描述中,正确的是
选项A:在基类定义的public成员在公有继承的派生类中可见,但不能在类外被访问
选项B:在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问
选项C:在基类定义的public和protected成员在保护继承的派生类中不可见
选项D:在派生类中不可见的成员要变成可访问的,需要进行访问声明
试题答案:D
6、当不同的类具有相同的间接基类时,有如下特点
选项A:各派生类对象将按继承路线产生自己的基类版本
选项B:派生类对象无法产生自己的基类版本
选项C:为了建立惟一的间接基类版本,在基类定义前加virtual即可
选项D:为了建立惟一的间接基类版本,不必声明虚继承
试题答案:A
7、在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值选项A:不同
选项B:相同
选项C:相容
选项D:部分相同
试题答案:B
8、若一个类中含有纯虚函数,则该类称为
选项D:抽象类
试题答案:D
9、下面有关new和delete操作符的说法。哪个是不正确的
选项A:使用new操作符,可以动态分配全局堆中的内存资源
选项B:若指针P的类型已由A强制转换为void*,那么执行语句delete P时,类A的析构函数不会被调用。选项C:实现全局函数时,new和delete通常成对地出现在由一对匹配的花括号限定的语句块中。
选项D:执行语句A* P=new A[100]时,类A的构造函数只会被调用一次。
10、应在下列程序画线处填入的正确语句是
#include
class Base
{ public:
void fun(){cout<<”Base.fun”< }; class perived: public Base { void fun () { ________ //显示调用基类的函数fun() cout<<”Perived::fun”< } } 选项A:fun() 选项B:Base.fun() 选项C:Base::fun() 选项D:Base→fun() 试题答案:C 11、下列描述中,表达错误的是 选项A:公有继承的基类中的public成员在派生类中仍是public的 选项B:私有继承的基类中private成员在派生类中仍是private的 选项C:公有继承的基类中的protected成员在派生类中仍protected的 选项D:私有继承的基类中public成员在派生类中是private的 试题答案:B 12、下列关于构造函数的描述中,错误的是 选项A:构造函数可以设置默认的参数 选项B:构造函数在定义类对象时自动执行 选项C:构造函数可以是内联函数 选项D:构造函数不可以重载 试题答案:D 13、下列有关重载函数的说法中正确的是 选项A:重载函数必须具有不同的返回值类型 选项B:重载函数参数个数必须相同 选项C:重载函数必须有不同的形参列表 选项D:重载函数名可以不同 试题答案:C 14、C++语言是从早期的C语言逐渐发展演变来的,与C语言相比,它在求解问题方法上进行最大改进的是选项B:面向对象 试题答案:B 15、对于下面的几个函数: 1. void f(int x) (…) 2. int f(int y) (…) 3. int f(int i,int j)(…) 4. floct k(int x) (…) 选项A:4个全部 选项B:1和4 选项C:2和3 选项D:3和4 试题答案:C 16、以下关于C++中类的概念理解正确的是 选项A:类作为一种数据类型,在定义时不分配任何内存 选项B:类的成员要么是private的要么是public的 选项C:在类中,如果没有显示指定成员的访问权限,则缺省的访问权限是public 选项D:类对象与一般变量不同的是,在使用时无需初始化即可直接使用 试题答案:A 17、关于new运算符,以下使用错误的是 选项A:int *p; p = new int(9); 选项B:int *p; p =new int[9]; 选项C:char *s; s = new char; 选项D:char *s; s = new[10]; 试题答案:D 18、当一个派生类私有继承一个基类时,基类中的所有保护成员成为派生类的 选项A:public成员 选项B:private成员 选项C:protected成员 选项D:友元 试题答案:B? 19、以下不是C++语言关键字的是 选项A:catch 选项B:char 选项C:value 选项D:virtual 试题答案:C 20、类C是以多重继承的方式从类A和类B继承而来的,类A和类B无公共的基类,那么选项A:类C的继承方式只能采用public继承 选项B:可改用单继承的方式实现类C的功能。 选项C:类A和类B至少有一个是抽象类。 选项D:类A类B只少有一个是虚基类。 试题答案:B 二、完型填空[10.0分/题]??( 得分率: 33.3%??平均得分: 6.66 ) 1、class Object { int val; public: Object() { val=0; cout<<"\n Defalut constructor for Object.\n"; } Object(int i) { val=i; cout<<"\n Constructor for Object: "< cout<<"\n Destructor for Object: "< class Container { private: int date; Object one; Object two; public: Container( ){ date=0; cout<<"\n Default constructor for Container.\n";} Container( int i, int j, int k):two(i),one(j){ date=k; cout<<"\n Constructor for Container.\n"; } ~Container( ){ cout<<"\n Destructor for Container. \n";} }; void main() { cout<<"\n...Entering main...\n"; Container obj(5,6,10); cout<<"\n...Exiting main...\n"; } 执行结果: ... Entering main ... _______1________ _______2________ _______3________ ...Exiting main ... _______4________ Destructor for Object: 5 Destructor for Object: 6 共五道选项:1,2,3,4) 各备选项均相同 A. Constructor for Object: 5 B. Constructor for Object: 6 C. Constructor for Container. D. Destructor for Container. 试题答案:1B,2A,3C,4D 深圳大学期末考试试卷 一、单项选择题(每题2分,共40分) 1. ______不是属于面向对象程序设计的特性 A. 抽象性 B. 数据相关性 C. 多态性 D. 继承性 2. 将对某一类数据的处理算法应用到另一类数据的处理中,要用到C++的______ A. 类 B. 虚函数 C. 运算符重载 D. 模板 3. C++与C语言最根本的不同之处在于_______ A. 使用了类 B. 能够实现变量自动初始化 C. 支持软件重用 D. 支持接口重用 4. 动态内存分配的主要目的是_______ A. 使程序按动态联编方式运行 B. 正确合理的使用内存 C. 提高程序的运行速度 D. 提高程序的可维护性 5. 在C++函数的形参前加const关键字,是为了提高函数的_______ A. 数据封装性 B. 可理解性 C. 可维护性 D. 可重用性 6. 函数重载的目的是________ A. 实现共享 B. 使用方便,提高可读性 C. 提高速度 D. 减少空间 7. 从程序片断:char name[] = "C++"; course(name);可判断函数course的调用采用的是_______ A. 传值调用 B. 带缺省参数值的函数调用 C. 引用调用 D. 传址调用 8. 用来说明类中公有成员的关键字是________ A. public B. private C. protected D. friend 9. 如果一个类的成员函数print()不修改类的数据成员值,则应将其声明为 A. void print() const; B. const void print(); C. void const print(); D. void print(const); 10. 下列关于构造函数的论述中,不正确的是_______ A. 构造函数的函数名与类名相同 B. 构造函数可以设置默认参数 C. 构造函数的返回类型缺省为int型 D. 构造函数可以重载 11. 在程序代码:A::A(int a, int *b) { this->x = a; this->y = b; }中,this的类型是______ A. int B. int * C. A D. A * 12. 内存泄漏是指_______ A. 内存中的数据出现丢失 B.试图释放一个已经释放了的动态分配的堆内存 C. 函数中局部变量所占的栈内存没有及时回收 D. 动态分配的堆内存在程序退出后始终被占用 13. 从程序片断:student zhangsan("张三","M",22); zhangsan.id("2005131000");可判断id是一个________ A. 私有成员数据 B. 私有成员函数 C. 公有成员数据 D. 公有成员函数 14. 友元函数_______ A. 可以被声明为const B. 没有this指针 C. 可以用类名或对象名来调用 D. 只能用对象名来调用 15. 若一个类的成员函数前用static关键字修饰,则该成员函数________ A. 可以被声明为const B. 没有this指针 C. 可以访问该类的所有成员 D. 只能用对象名来调用 16. C++是用_______实现接口重用的 A. 内联函数 B. 虚函数 C. 重载函数 D. 模板函数 17. 公有继承的派生类对象可以访问其基类的________ A. 公有成员 B. 公有成员及受保护成员 C. 受保护成员 D. 私有成员 18. 设置虚基类的目的是________ A. 简化程序 B. 使程序按动态联编方式运行 C. 提高程序运行效率 D. 消除二义性 19. 下列关于纯虚函数和抽象类的描述中,不正确的是________ A. 纯虚函数是一个没有具体实现的虚函数 B. 抽象类是包括纯虚函数的类 C. 抽象类只能作为基类,其纯虚函数的实现在派生类中给出 D. 可以定义一个抽象类的对象 20. 关于运算符重载的不正确的描述是________ A. 运算符重载函数是友元函数 B. 体现了程序设计的多态性 C. 增加新的运算符 D. 使运算符能对对象操作 一、单项选择题(每题2分,共40分) 1. C++在C的基础上成为面向对象程序设计语言的主要原因是_______ A.增加了一些新的运算符 B.允许函数同名 C.使用cin和cout进行键盘输入和屏幕输出 D.引进了类和对象的概念 2. 将一组数据和对这组数据进行操作的函数组装成对象的过程叫________ A. 数据封装与信息隐藏 B. 函数重载 C. 软件重用 D. 接口重用 3. 用同一个函数实现对不同类型的数据进行相同处理,要用到C++的______ A. 类 B. 继承 C. 重载 D. 模板 4. 若函数int fun(int &p)的形参int &p前加const,在主函数中该函数被调用x=fun(y);则_______ A. y的值在主函数内不能被改变 B. y的值在fun()函数内不能被改变 C. x的值在主函数内不能被改变性 D. x的值与y的值相同 5. 一个功能不太复杂,但被频繁调用的函数应尽量定义为_______ A. 内联函数 B. 带缺省参数值的函数 C. 重载函数 D. 虚函数 6. 函数重载不是根据________ A. 参数个数 B. 参数的类型 C. 参数的顺序 D. 函数的类型 7. 用来说明类中受公共成员的关键字是________ A. public B. private C. protected D. friend 8. 如果一个类CA的成员函数show()定义如下: void CA::show() const { cout << this->a; } 则上述代码中的const关键字表示________ A. show()函数返回一个常量 B. show()函数的参数类型为常量; C. 不能修改目标对象数据成员a的值 D. 可以修改目标对象数据成员a的值 9. 在第9小题的show()函数体内的程序代码中,this是一个_______ A. show()函数的形参,是指向CA类对象的指针 B. 指向CA类对象的全局指针变量 C. show()函数的形参,是CA类对象的引用 D. CA类对象的全局引用 10. 若CA是一个类,则定义语句CA a(1), b[2], *p[3];执行时将自动调用构造函数的次数为_______ A. 1 B. 2 C. 3 D. 6 11. 从程序片断:CSieve a(1000); a.findPrime();可判断findPrime()是一个________ A. 私有成员数据 B. 私有成员函数 C. 公有成员数据 D. 公有成员函数 12. 若一个类的数据成员前用static关键字修饰,则该数据成员________ A. 是该类所有对象所共享的 B. 要在构造函数内初始化 C. 在每个对象的实例中都保留一个备份 D. 只能由静态成员函数来访问 13. 友元函数________ A. 用于增强封装性 B. 用于提高程序运行效率 C. 有this指针 D. 可以是虚函数 14. 派生类对象d可以访问其基类的数据成员b,即d.b,其中b是________ A. 私有继承的公有成员 B. 公有继承的公有成员 C. 公有继承的受保护成员 D. 公有继承的私有成员 15. 假设class CA : public CB,即类CA是类CB的派生类,则一个CA类对象定义和撤消时,调用构造函数和析构函数的次序分别为________ A. CA,CB;~CA,~CB B. CB,CA;~CB,~CA C. CA,CB;~CB,~CA D. CB,CA;~CA,~CB 16. 要实现接口重用的基本条件是________ A. 用基类对象名来调用虚函数 B. 用派生类对象名来调用虚函数 C. 用基类对象指针来调用虚函数 D. 用派生类对象指针来调用虚函数 17. 以下叙述中,不正确的是________ A. 纯虚函数是一个没有具体实现的虚函数 B. 设置虚基类的目的是使程序按动态联编方式运行 C. 抽象类是包括纯虚函数的类 D. 抽象类只能作为基类,其纯虚函数的实现在派生类中给出 18. 赋值运算符重载函数必须定义成________的形式 A. 友元函数 B. 静态成员函数 C. 非静态成员函数 D. 虚函数 19. C++的异常是用_______语句块处理的 A. if…else… B. try…catch… C. template…class D. try…throw… 20. 实现两个相同类型数加法的函数模板应声明为_______ A. add(T x,T y) B. T add(T x,T y) C. T add(x,y) D. T add(T x,y)