当前位置:首页 > 面向对象程序设计试题(一)
一、单项选择题(本大题共10小题,每小题2分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.一个函数功能不太复杂,但要求被频繁调用,选用( ) A. 内联函数 B.重载函数 C.递归函数
D.嵌套函数
2.C++的继承性允许派生类继承基类的( ) A. 部分特性,并允许增加新的特性或重定义基类的特性 B.部分特性,但不允许增加新的特性或重定义基类的特性 C.所有特性,并允许增加新的特性或重定义基类的特性 D.所有特性,但不允许增加新的特性或重定义基类的特性 3.在C++中,封装是借助什么达到的?( ) A.结构 B.类 C.数组
D.函数 4.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(A. 自己所属类、对象成员所属类、基类的构造函数 B.对象成员所属类、基类、自己所属类的构造函数 C.基类、对象成员所属类、自己所属类的构造函数 D.基类、自己所属类、对象成员所属类的构造函数
5.类的析构函数是对一个对象进行以下哪种操作时自动调用的?( ) A.建立 B.撤消 C.赋值
D.引用
6.下列不是..描述类的成员函数的是( ) A.构造函数 B.析构函数 C.友元函数
D.拷贝构造函数 7.所有在函数中定义的变量,连同形式参数,都属于( ) A. 全局变量 B.局部变量 C.静态变量
D.寄存器变量
8.假定AB为一个类,则执行AB x;语句时将自动调用该类的( ) A.有参构造函数
B.无参构造函数
面向对象程序设计试题 第1页 共 10 页
) C.拷贝构造函数 D.赋值构造函数
9.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为( ) A.x.a C.x->a
B.x.a() D.x->a()
10.对于任一个类,用户所能定义的构造函数的个数至多为( ) A.0 C.2
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。 11.对象的四大基本特性是多态性、继承性、______和封装性。
12.为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限
定义为______。
13.C++程序的源文件扩展名为______。
14.所有模版都是以______关键字和一个形参表开头的。
15.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是______定义的
头文件。
16.一个const对象只能访问______成员函数。 17.C++是通过引用运算符______来定义一个引用的。 18.若y是x的引用,则对y的操作就是对______的操作。 19.执行______操作将释放由p所指向的动态分配的数据空间。 20.C++的流库预定义了4个流,它们是cin、cout、______和clog。 三、改错题(本大题共2小题,每小题6分,共12分)
21.假定下面程序将分数a和b相加,其和赋值给c并输出,要求输出结果为“13/18”,其主
函数5到8行之间存在着三行语句错误,请指出错误行的行号并改正。 #include
面向对象程序设计试题 第2页 共 10 页
//定义分数类 //定义分子 //定义分母 B.1 D.任意个
//把*this化简为最简分数,具体定义在另外文件中实现 void FranSimp();
//返回两个分数*this和x之和,具体定义在另外文件中实现 Franction FranAdd(const Franction& x); //置分数的分子和分母分别0和1 void InitFranction() {nume=0; deno=1;} //置分数的分子和分母分别n和d
void InitFranction(int n,int d) {nume=n; deno=d;} //输出一个分数
void FranOutput() {cout< void main() { Franction a,b,c; a.InitFranction(7,18); b.InitFranction(1); c.InitFranction(); c=FranAdd(a,b); cout< 错误行的行号为______、______和______。 分别改正为______、______和______。 22.下面是一个类的定义,在5到12行之间有3行存在语法错误,请指出错误行的行号并 改正。 class CE { private: int a,b; int getmin() {return (a public //1行 //2行 //3行 //4行 //5行 面向对象程序设计试题 第3页 共 10 页 //1行 //2行 //3行 //4行 //5行 //6行 //7行 //8行 //9行 int c; void SetValue(int x1,int x2,int x3) { a=x1;b=x2;c=x3; }; int GetMin(); }; int GetMin(){ int d=getmin(); return(d } 错误行的行号为______、______和______。 分别改正为______、______和______。 //6行 //7行 //8行 //9行 //10行 //11行 //12行 //13行 //14行 //15行 四、程序填空题(本大题共3小题,每小题6分,共18分) 请按提示要求完成以下程序段的填空。 23.class A { int a,b; public: ____(1)____ //定义构造函数,使参数aa和bb的默认值为0, //在函数体中用aa初始化a,用bb初始化b }; main(){ A *p1,*p2; ____(2)____; //调用无参构造函数生成由p1指向的动态对象 ____(3)____; //调用带参构造函数生成由p2指向的动态对象, //使a和b成员分别被初始化为4和5 } (1) (2) (3) 24.一种类定义如下: #include 面向对象程序设计试题 第4页 共 10 页
共分享92篇相关文档