面向对象程序设计综合练习题a.docx
《面向对象程序设计综合练习题a.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计综合练习题a.docx(81页珍藏版)》请在冰豆网上搜索。
面向对象程序设计综合练习题a
一、单项选择题
1-1.C++语言是从早期的C语言逐步发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是(B)。
A.面向过程B.面向对象
C.安全性D.复用性
1-2.C++源程序文件的缺省扩展名为(A)。
A.cpp B.exe C.obj D.lik
1-3.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cpp B.exe C.obj D.lik
1-4.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cpp B.exe C.obj D.lik
1-5.编写C++程序一般需经过的几个步骤依次是(B)。
A.编译、编辑、连接、调试
B.编辑、编译、连接、调试
C.编译、调试、编辑、连接
D.编辑、调试、编辑、连接
1-6.用“>>”运算符从键盘输入多于一个数据时,各数据之间应使用(D)符号作为分隔符。
A.空格或逗号B.逗号或回车
C.逗号或分号D.空格或回车
1-7.C++中声明常量的关键字是(A)。
A.constB.extern
C.publicD.enum
1-8.以下叙述中正确的是(B)
A.使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值
B.使用const定义的常量名有类型之分,其值在程序运行时是不可改变的
C.在程序中使用内置函数使程序的可读性变差
D.在定义函数时可以在形参表的任何位置给出缺省形参值
1-9.下列的符号常变量定义中,错误的定义是(C)。
A.constM=10; B.constintM=20;
C.constcharch; D.constboolmark=true;
1-10.函数原型语句正确的是(B)。
A.intFunction(voida)
B.voidFunction(int);
C.intFunction(a);
D.voidint(doublea);
1-11.以下正确的函数原型语句是(C)。
A.doublefun(intx,inty)
B.doublefun(intx;inty)
C.doublefun(int,int);
D.doublefun(intx,y);
1-12.下面有关重载函数的说法中正确的是(C)。
A.重载函数必须具有不同的返回值类型
B.重载函数形参个数必须不同
C.重载函数必须有不同的形参列表
D.重载函数名可以不同
1-13.函数重载是指(A)。
A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个以上的函数取相同的函数名,并且函数的返回类型相同
1-14.采用重载函数的目的是(D)。
A.实现共享B.减少空间
C.提高速度 D.使用方便,提高可读性
1-15.以下关于函数模板叙述正确的是(C)。
A.函数模板也是一个具体类型的函数
B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数定义
D.用函数模板定义的函数没有类型
1-16.以下正确的描述是( C )。
A.不允许设置参数的默认值
B.设置参数的默认值只能在定义函数时设置
C.设置参数的默认值时,应该设置右边的参数
D.设置参数的默认值时,应该全部参数都设置
1-17.(B)是给变量取一个别名,它引入了变量的同义词。
A.指针B.引用
C.枚举D.结构
1-18.假定变量x定义为“intx=5;”,要使rx成为x的引用(别名),rx应定义为( D)。
A.intrx=x; B.intrx=&x;
C.int*rx=&x; D.int&rx=x;
1-19.下列对引用的陈述中不正确的是( C)。
A.每一个引用都是其所引用对象的别名,因此必须初始化
B.形式上针对引用的操作实际上作用于它所引用的对象
C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D.不需要单独为引用分配存储空间
1-20.下列(C)的调用方式是引用调用。
A.形参和实参都是变量
B.形参是指针,实参是地址值
C.形参是引用,实参是变量
D.形参是变量,实参是地址值
1-21.在(C)情况下适宜采用inline定义内置函数。
A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、且频繁调用
D.函数代码多、不常调用
1-22.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择(A)。
A.内置函数B.重载函数
C.递归函数D.函数模板
1-23.一个函数功能不太复杂,但要求被频繁调用,选用(A)
A.内置函数B.重载函数
C.递归函数D.嵌套函数
1-24.说明内置函数的关键字是(A)。
A.inlineB.virtual
C.defineD.static
1-37.对于动态分配内存空间描述正确的是(D)。
A.使用new运算符分配的内存空间的长度必须是常量
B.delete运算符可以释放动态的存储空间和静态的存储空间
C.用new分配的内存空间是不连续的
D.delete运算符只能以释放由new分配的动态存储空间
1-38.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为( A)。
A.int*p=newint[30]; B.int*p=newint(30);
C.int*p=new[30]; D.*p=newint[30];
2-1.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是(D)。
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
2-2.面向对象软件开发中使用的OOA表示( A)。
A.面向对象分析 B.面向对象设计
C.面向对象语言 D.面向对象方法
2-3.面向对象软件开发中使用的OOD表示( B)。
A.面向对象分析 B.面向对象设计
C.面向对象语言 D.面向对象方法
2-4.关于面向对象系统分析,下列说法中不正确的是( B)。
A.术语“面向对象分析”可以用缩写OOA表示
B.面向对象分析阶段对问题域的描述比设计阶段更详细
C.面向对象分析包括问题域分析和应用分析两个步骤
D.面向对象分析需要识别对象的内部和外部特征
2-5.下列关于成员函数特征的描述中,(A)是错误的。
A.成员函数一定是内置函数
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
2-6.在关键字private后面定义的成员为类的( A)成员。
A.私有 B.公用 C.保护 D.任何
2-7.在一个类的定义中,包含有( C)成员的定义。
A.数据 B.函数
C.数据和函数 D.数据或函数
2-8.在类作用域中能够通过直接使用该类的( D)成员名进行访问。
A.私有 B.公用 C.保护 D.任何
2-9.在关键字public后面定义的成员为类的( B)成员。
A.私有 B.公用 C.保护 D.任何
2-10.类中定义的成员默认为( B)访问属性。
A.public B.private C.protected D.friend
2-11.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为( D)。
A.x(a) B.x[a] C.x->a D.x.a
2-12.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为( B)。
A.x.a B.x.a() C.x->a D.x->a()
2-13.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为( C)。
A.px(a) B.px[a] C.px->a D.px.a
2-14.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( D)。
A.x.a B.x.a()
C.x->GetValue() D.x.GetValue()
2-14.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A)。
A.intAA:
:
a() B.intAA:
a()
C.AA:
:
a() D.AA:
:
inta()
2-15.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( B)放在函数原型或函数头的前面。
A.in B.inline C.inLine D.InLiner
2-16.下列特性不是面向对象程序设计语言所特有的是(D)。
A.数据封装B.继承
C.多态性D.模板
3-1.关于构造函数,下列说法不正确的是(D)。
A.构造函数名字和类名相同
B.构造函数在创建对象时自动执行
C.构造函数无任何函数返回类型
D.构造函数有且只有一个
3-2.类的构造函数是在定义该类的一个( C)时被自动调用执行的。
A.成员函数 B.数据成员
C.对象 D.友元函数
3-3.一个类的构造函数通常被定义为该类的( A )成员。
A.公用 B.保护 C.私有 D.友元
3-4.关于构造函数特点描述中,错误的是(A)。
A.定义构造函数必须指出类型
B.构造函数的名字与该类的类名相同
C.一个类中可以定义0个至多个构造函数
D.构造函数是一个成员函数
3-5.对于一个类的构造函数,其函数名与类名(A)。
A.完全相同B.基本相同
C.不相同 D.无关系
3-6.每个类(C)构造函数。
A.只能有一个B.可以有公用的
C.可以有多个D.只可有缺省的
3-7.对类对象成员的初始化是通过构造函数中给出的(B)实现的。
A.函数体B.参数初始化表
C.参数表 D.参数初始化表或函数体
3-8.假定AB为一个类,则执行“ABx;”语句时将自动调用该类的(B).。
A.有参构造函数B.无参构造函数
C.复制构造函数D.赋值重载函数
3-9.假定AB为一个类,则执行“ABx(a,5);”语句时将自动调用该类的( A )。
A.带参构造函数 B.无参构造函数
C.复制构造函数 D.赋值重载函数
3-10.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTestobjTest;”语句时将自动调用该类的(B)。
A.有参构造函数B.无参构造函数
C.复制构造函数D.赋值构造函数
3-11.构造函数不具备的特征是(D)。
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
3-12.假定一个类的构造函数为“B(intax,intbx):
a(ax),b(bx){}”,执行“Bx(1,2),y(3,4);x=y;”语句序列后x.a的值为(C)。
A.1B.2C.3 D.4
3-13.假定一个类的构造函数为“A(intaa,intbb){a=aa;b=aa*bb;}”,则执行“A x(4,5);”语句后,x.a和x.b的值分别为( C )
A.4和5 B.5和4 C.4和20 D.20和5
3-14.假定一个类的构造函数为“A(intaa=1,intbb=0){a=aa;b=bb;}”,则执行“Ax(4);”语句后,x.a和x.b的值分别为( D )。
A.1和0 B.1和4 C.4和1 D.4和0
3-15.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为( C)。
A.AB(){} B.AB():
a(0){}
C.AB(intaa=0){a=aa;} D.AB(intaa){}
3-16.类的析构函数是一个对象被( B )时自动调用的。
A.建立 B.撤消 C.赋值 D.引用
3-17.能够释放对象所占资源的是(A)。
A.析构函数 B.数据成员
C.构造函数 D.静态成员函数
3-18.类的析构函数的作用是(D).。
A.一般成员函数B.类的初始化
C.对象的初始化D.对象释放后的操作
3-19.对于一个类的析构函数,其函数名与类名( C)。
A.完全相同 B.完全不同
C.只相差一个字符 D.无关系
3-20.一个类的析构函数通常被定义为该类的( C)成员。
A.私有 B.保护 C.公用 D.友元
3-21.定义析构函数时,应该注意(C)。
A.其名与类名完全相同
B.返回类型是void类型
C.无形参,也不可重载
D.函数体中必须有delete语句
3-22.类的析构函数可以带有( A )个参数。
A.0 B.1 C.2 D.任意
3-23.类的析构函数是在(C)调用的。
A.类创建时B.创建对象时
C.对象生命期结束时D.不自动调用
3-24.当一个类对象离开它的作用域时,系统自动调用该类的( D )。
A.无参构造函数 B.带参构造函数
C.拷贝构造函数 D.析构函数
3-25.假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为( C)。
A.0 B.1 C.n D.n-1
3-26.假定AB为一个类,则执行“ABa[10];”语句时调用该类无参构造函数的次数为( D)。
A.0 B.1 C.9 D.10
3-27.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为( D)。
A.int B.char C.AA D.AA*
3-28.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为( C)。
A.abc B.*this C.this D.this&
3-29.假定AB为一个类,则执行“AB*px=newAB[n];”语句时将( A )。
A.动态分配一个数组 B.动态分配一个对象
C.静态分配一个数组 D.静态分配一个对象
3-30.设px是指向一个类对象的指针变量,则执行“deletepx;”语句时,将自动调用该类的( C )
A.无参构造函数 B.带参构造函数
C.析构函数 D.复制构造函数
3-31.对于在类中定义的静态数据成员,下面正确的说法是(C)。
A.该类的每一个对象中都有一个静态数据成员
B.对象创建时产生
C.在类外进行初始化
D.既可以在类外初始化,也可以在类内初始化
3-32.一个类的静态数据成员所表示属性( C)。
A.是类的或对象的属性 B.只是对象的属性
C.只是类的属性 D.类和友元的属性
3-33.类的静态成员的访问控制( D)。
A.只允许被定义为private
B.只允许被定义为private或protected
C.只允许被定义为public
D.可允许被定义为private、protected或public
3-34.静态成员函数对类的数据成员访问( B )。
A.是不允许的
B.只允许是静态数据成员
C.只允许是非静态数据成员
D.可允许是静态数据成员或非静态数据成员
3-35.被非静态成员函数访问的类的数据成员( A)。
A.可以是非静态数据成员或静态数据成员
B.不可能是类的静态数据成员
C.只能是类的非静态数据成员
D.只能是类的静态数据成员
3-36.静态数据成员的初始化是在( D)中进行的。
A.构造函数 B.任何成员函数
C.所属类 D.全局区
3-37.由于数据隐藏的需要,静态数据成员通常被说明为(A)。
A.私有的B.公用的
C.保护的D.不可访问的
3-38.复制构造函数的参数通常是(C)。
A.无特殊要求
B.指向对象的指针
C.自己类对象的常引用
D.对象
3-39.通常,复制构造函数的参数是(C)。
A.某个对象名
B.某个对象的成员
C.某个对象的引用名
D.某个对象的引用名
3-40.关于常成员的描述中,错误的是(B)。
A.常成员包括常数据成员和常成员函数两种
B.常数据成员必须是公用的
C.常数据成员要使用构造函数成员初始化列表进行初始化
D.常对象只能调用它的常成员函数,不能调用其它的成员函数
3-41.引入友元的主要目的是为了( C)。
A.增强数据安全性
B.提高程序的可靠性
C.提高程序的效率和灵活性
D.保证类的封装性
3-42.一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明( A)。
A.需加上类域的限定
B.不需加上类域的限定
C.类域的限定可加可不加
D.不需要任何限定
3-43.类成员的访问权限中,(C)只能被本类的成员函数和其友元函数访问。
A.shareB.public
C.privateD.protected
3-44.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的( D)。
A.只能是公有成员
B.只能是保护成员
C.只能是除私有成员之外的任何成员
D.具有任何权限的成员
3-45.下面不是描述类的成员函数的是(C)。
A.构造函数B.析构函数
C.友元函数D.复制构造函数
3-46.下列函数中,(C)不是类的成员函数。
A.构造函数B.析构函数
C.友元函数D.复制构造函数
3-47.如果类A被说明成类B的友元,则(D)。
A.类A的成员即类B的成员
B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员
D.类B不一定是类A的友元
4-1.关于运算符重载,下列说法正确的是( C )。
A.重载时,运算符的优先级可以改变。
B.重载时,运算符的结合性可以改变。
C.重载时,运算符的功能可以改变。
D.重载时,运算符的操作数个数可以改变。
4-2.下列关于运算符重载的描述中,错误的是(B)。
A.运算符重载不可以改变操作数的个数
B.运算符重载不可以改变运算符的功能
C.运算符重载不可以改变结合方向
D.运算符重载不可以改变运算优先级
4-3.关于运算符重载,下列说法正确的是(B)。
A.所有运算符都可以重载
B.通过重载,可以使运算符应用于自定义的数据类型
C.通过重载,可以创建原来没有的运算符号
D.通过重载,可以改变运算符的优先级
4-4.在一个类中可以对一个运算符进行(D)重载。
A.1种B.2种以下
C.3种以上D.多种
4-5.不能参与重载的运算符是(A)。
A.类B.函数
C.函数模板D.运算符
4-6.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( B )。
A.作为友元函数重载的1元运算符
B.作为成员函数重载的1元运算符
C.作为友元函数重载的2元运算符
D.作为成员函数重载的2元运算符
4-7.在成员函数中进行双目运算符重载时,其参数表中应带有( B )个参数。
A.0 B.1 C.2 D.3
4-8.双目运算符重载为普通函数时,其参数表中应带有( C)个参数。
A.0 B.1 C.2 D.3
4-9.如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( A)。
A.a.operator+(b) B.b.operator+(a)
C.operator+(a,b) D.operator(a+b)
4-10.如果表达式a==b中的“==”是作为普通函数重载