c 面向对象技术复习题汇总(含答案).doc

上传人:椰子壳 文档编号:5175439 上传时间:2020-02-15 格式:DOC 页数:13 大小:99KB
返回 下载 相关 举报
c 面向对象技术复习题汇总(含答案).doc_第1页
第1页 / 共13页
c 面向对象技术复习题汇总(含答案).doc_第2页
第2页 / 共13页
c 面向对象技术复习题汇总(含答案).doc_第3页
第3页 / 共13页
c 面向对象技术复习题汇总(含答案).doc_第4页
第4页 / 共13页
c 面向对象技术复习题汇总(含答案).doc_第5页
第5页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《c 面向对象技术复习题汇总(含答案).doc》由会员分享,可在线阅读,更多相关《c 面向对象技术复习题汇总(含答案).doc(13页珍藏版)》请在三一文库上搜索。

1、 面向对象程序设计C+复习资料与答案第一、二、六、七章习题一、选择题1、系统约定C+源程序文件名的缺省的扩展名为()A、bccB、c+C、cppD、vcc2、面向对象的程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、int D、无4、对于C+的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是()A、int *p=n

2、ew int(10);B、int *p=new int10C、int *p=new int;D、int *p=new int40(0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:( )A、name3=a;、name=”lin”;、name=new char5; 、coutname3;7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:()A、name3=q;、name=”lin”;、name=new char5; 、name=new char(q);8、假设已经定义:const char *n

3、ame=”chen”;, 下面的语句中错误的是:()A、name3=q;、name=”lin”;、name=new char5; 、name=new char(q);9、下面的类型声明中正确的是:( )A、int &a4;B、int &*p;C、int &qD、int i,*p=&i;10、假设定义了函数模板( )template T max(T x,T y) return(xy)?x:y; 并定义了int i;char c;错误的调用语句是:( )A、max(i,i)B、max(c,c)C、max(int)c,i);D、max(i,c)11、模板的使用是为了()A、提高代码的可重用性B、提高

4、代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int xa;cinx;则编译器认为()A、说明语句int xa错B、二个语句都错C、语句cinx 错D、二个语句正确,没有语法错13、设有语句:void f(int a10,int &x);int y10,*py=y,n;则对函数f的正确调用语句是()A、f(py10,n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C+中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y) (2) int f(int a,float b) (3)

5、 int f(int i,int j) (4) float k(int x) 是重载函数。A、4个全部 B、1和2 C、2和3 D、3和416、使用myFile.open(“Sales.dat”,ios:app);语句打开文件Sales.dat后,则()A、使输出追加到文件尾部B、打开一个文件进行读操作C、打开一个文件进行读和写操作D、文件以二进制方式打开,默认时为文本文件二、填空题1、面向对象的程序设计有四大特征,它们是抽象、封装、 、 。2、结构体类型中的数据和成员函数默认类型为。3、C+要求为每个函数建立原型,以说明函数的名称、参数的和,以及函数返回值。4、在函数说明前加关键字“inli

6、ne”,则该函数被声明为函数,其引入的目的是为了消除函数调用时的开销,以提高运行速度。5、引用变量与被引用变量占有 内存单元。6、 运算符能够用于访问当前作用域内与局部变量同名的全局变量。7、#include void s(int a,int &b)int t=a;a=b;b=t;void main(void)int x=500,y=1000;coutxtyn;s(x,y);coutxtyn;程序的第一行输出为,第二行输出为。8、#include void main(void)for(int a=1,b=1;a=8) break;if(b%2=1)b+=7;continue;b-=3; cou

7、t”a=”an”b=”bn;程序输出结果是a= ,b= 。9、#include int x=100;void main(void)int x=200;x+=:x; int x=500;:x+=x; coutxn;cout:xn;程序的第一行输出为,第二行输出为。10、#includevoid f(float x=5, int y=16, char z=C);void main( ) float a=1.6; int b=2; char c=D; f();f(a);f(a,b); f(a,b,c); void f(float x, int y, char z) cout“x=”x“ y=”y“

8、z=”zendl; 程序的第二行输出为,第三行输出为。11、以下程序的输出结果是 。#include char a=“ABCDEFGHI”;char &f(int);int main() f(6)=X; coutaendl; return 0;char &f(int i) return ai;12、如果C+程序中使用了:cout、strcpy,则必须在程序首部包含文件和。13、#include #include void main()int i=7890; coutsetw(6)iendl; coutiendl;程序的第一行输出为,第二行输出为。14、#include void main()i

9、nt i=100;cout.setf(ios:hex);couti”t”;couti”t”;cout.setf(ios:dec);couti”n”;以上程序运行的结果是 第三章 类和对象一、选择题1、()不是构造函数的特征。 A、构造函数的函数名与类名相同; B、构造函数可以重载; C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。2、下列关于构造函数的描述中,()是正确的。 A、构造函数可以设置缺省参数; B、构造函数可以被继承; C、构造函数可以对静态数据成员进行初始化; D、构造函数可以说明为虚函数;3、()是析构函数的特征。 A、析构函数可以有一个或多个参数; B、析构函数

10、名与类名不同; C、析构函数的定义只能在类体内; D、一个类中只能定义一个析构函数;4、定义析构函数时,应该注意()。 A、其函数名与类名完全相同; B、函数返回类型是void类型; C、无形参,也不可重载; D、函数体中必须有delete语句;5、下列静态数据成员的特性中,()是错误的。 A、说明静态数据成员时前边要加修饰符static; B、静态数据成员要在类体外进行初始化; C、静态数据成员不是所有对象所共用的; D、引用静态数据成员时,要在其名称前加和作用域运算符;6、友元的作用是()。 A、提高程序的运用效率; B、加强类的封装性; C、实现数据的隐藏性; D、增加成员函数的种类;7

11、、关于成员函数特征的下列描述中,()是错误的。 A、成员函数一定是内联函数; B、成员函数可以重载; C、成员函数可以设置缺省参数值; D、成员函数可以是静态的;8、已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的; A、void print() const; B、const void print(); C、void const print(); D、void print(const);9、在()情况下适宜采用inline定义内联函数。 A、函数体含有循环语句; B、函数体含有递归语句; C、函数代码小,频繁调用; D、函数代码多,不常调用;10、假定AB为一

12、个类,则执行“AB a(4) , b3 , * p2 ;”语句时,自动调用该类构造函数的次数为( )。A、 3 B、 4 C、 6 D、 911、通常拷贝初始化构造函数的参数是( )。 A、某个对象名 B、某个对象的成员名 C、某个对象的引用名 D、某个对象的指针名 12、有关类的说法不正确的是( )。 A、类是一种用户自定义的数据类型 B、只有类中的成员函数才能存取类中的私有数据 C、在类中,如果不作特别说明,所有的数据均为私有类型 D、在类中,如果不作特别说明,所有的成员函数均为公有类型 13、在声明类时,下面说法正确的的是( )。 A、可以在类的声明中给数据成员赋初值 B、数据成员的类型

13、可以是register C、public, private, protected这三种属性的成员可以按任意顺序出现 D、没有用public, private, protected定义的成员是公有成员14、已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5, ( )是正确的。 A、A1.p=5 B、A1-p=5 C、A1.*p=5 D、*A1.p=5 15、已知:类A中一个成员函数说明如下: void Set(A&a); 其中,A&a的含义是( )。 A、指向类A的指针为a B、将a的地址值赋给变量Set C、a是类A的对象引用,用来作函数Set()的形参 D、变量

14、A与a按位相与作为函数Set()的参数 16、下列说明中const char *ptr; ptr应该是( )。 A、指向字符型常量的指针 B、指向字符的常量指针 C、指向字符变量的指针 D、指向字符串的常量指针 17、采用函数重载的目的在于: A、实现共享 B、减少空间 C、提高速度 D、使用方便,提高可读性 18、有关类和对象的说法下列不正确的是( )。 A、对象是类的一个实例 B、任何一个对象只能属于一个具体的类 C、一个类只能有一个对象 D、类与对象的关系和数据类型和变量的关系相似 19、有以下类的说明,请指出错误的地方()。 Class CSample int a=2.5; A CSa

15、mple(); B public: CSample(int val); C CSample(); D;20、在类的定义形式中,数据成员、成员函数和( )组成了类定义体。 A、成员的访问控制信息 B、公有消息 C、私有消息 D、保护消息二、填空题1 通常的拷贝初始化构造函数的参数是_ 2 在C+中函数参数的传递方式有三种,分别是:_、_和_。3 任何类中允许有三种访问权限的数据,这三种访问权限分别是_、_和_。 4 类中数据成员和成员函数的默认类型为_ 5 在类内部定义的_和_数据不能被不属于该类的成员函数来存取,定义为_的数据,可以在类外部进行存取。 6 _是一种特殊的成员函数,它主要用来为对

16、象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。 7 一个类中有_个析构函数。 8 _成员函数中不能直接引用类中说明的非静态成员。 9 已知类Sample 中的一个成员函数说明如下:void Set(Sample &a);其中,Sample &a的含意是_10静态数据成员属于类,可以使用_的方式访问静态的数据成员。 11编译程序将this指针指向_。 12以下程序的执行结果是_。# include class Sample public: Sample () cout “constructore” endl; ;void fn (int i) static Sample

17、c; cout “i=” i endl;void main () fn (10) ; fn (20) ;13. 以下程序的执行结果是_。# include class sample private: int n; static int k;public: sample(int i) n=i; k+; ; void disp();void sample: disp () coutn= n , k= k endl; int sample: k=0;void main () sample a(10), b(20), c(30) ;a.disp() ;b.disp();c.disp(); 14 以下程

18、序的执行结果是_# include class sample int x;public: void setx( int i ) x=i; int putx( ) return x; ;void main ( ) sample *p;sample A 3;A0.setx(5);A1.setx(6);A2.setx(7);for (int j=0 ; j3; j+ ) p= &A j ; coutputx( ) ;coutendl;15以下程序的执行结果是_#includeclass A public: A( ) coutConstructing A n;A( ) coutDestructing

19、A n; ;class B public: B( ) coutConstructing B n; B( )coutDestructing B n; ;main( )A a;B b;return 0;第四章 派生类与继承一、选择1、 从一个基类派生出的各个类的对象之间 (1) 。 A、共享所有数据成员,每个对象还包含基类的所有属性 B、共享部分数据成员,每个对象还包含基类的所有属性 C、不共享任何数据成员,但每个对象还包含基类的所有属性 D、共享部分数据成员和成员函数2、 C+的继承性允许派生类继承基类的 (2) 。 A、部分特性,并允许增加新的特性或重定义基类的特性 B、部分特性,但不允许增加

20、新的特性或重定义基类的特性 C、所有特性,并允许增加新的特性或重定义基类的特性 D、所有特性,但不允许增加新的特性或重定义基类的特性3、 对于公有继承,基类的公有和保护成员在派生类中将 (3) 成员。 A、全部变成公有 B、全部变成保护 C、全部变成私有 D、仍然相应保持为公有和保护4、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为 (4) 的构造函数。 A、自己所属类、对象成员所属类、基类 B、对象成员所属类、基类、自己所属类 C、基类、对象成员所属类、自己所属类 D、基类、自己所属类、对象成员所属类5、派生类的对象对其基类中 (5) 可直接访问。 A、公有继承的公有成

21、员 B、公有继承的私有成员 C、公有继承的保护成员 D、私有继承的以有成员6、设类B是基类A的派生类,并有语句:A aa, * pa=&aa; B bb, * pb=&bb; 则正确的语句是_(6)_ 。A、pb=pa; B、bb=aa; C、aa=bb; D、*pb=*pa;7、在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 _ (7)_. A、派生类的对象可以赋给基类的对象 B、派生类的对象可以初始化基类的引用 C、派生类的对象可以直接访问基类中的成员 D、派生类的对象的地址可以赋给指向基类的指针8、若类X和类Y的定义如下:class X int a,b; public:

22、 void fx ( );;class Y: public X int c; public: void fy ( );void Y:fy ( ) c=a*b; 则上述代码中, (8) 是非法的语句。 A、void fx();B、k=a*b;C、void fy();D、int c;9、如果一个派生类的基类不止一个,则这种继承称为_(9)_。A、单继承B、虚继承C、多态继承D、多重继承10假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: (10)。A、AB operator+(AB & a , AB & b) B、 AB operato

23、r+(AB & a)C、operator+(AB a) D、 AB & operator+( )11、下面叙述不正确的是 (11)。A、派生类可以使用private派生B、基类的public成员在派生类中仍然是publicC、对基类成员的访问必须是无二义性的D、赋值兼容原则也适合多重继承的组合12、下面叙述不正确的是 (12)。A、基类的protected成员在派生类中仍然是protectedB、基类的protected成员在public派生类中仍然是protectedC、基类的protected成员在private派生类中仍然是privateD、对基类成员的访问必须是无二义性的13、下面叙述

24、不正确的是 (13)。A、成员的访问能力在private派生类中和public派生类中仍是不同的B、基类的private成员在public派生类中不可访问C、赋值兼容规则不适合于多重继承的组合D、public基类成员在protected派生中是protected14、下面叙述正确的是 (14)。A、基类的对象可以赋给派生类B、只要是基类的对象,都可以赋给由它派生的任一个派生类对象C、只有该基类直接派生出来的类的对象才可以赋给该基类的对象D、公有派生类的对象可以赋给基类的对象15以下程序的输出结果为是 (15) 。#include class A public: int n; ; class B

25、:virtual public A; class C:virtual public A; class D:public B,public C int getn()return B:n; ; void main() D d; d.B:n=10; d.C:n=20; coutd.B:n,d.C:nendl; A、10,20 B、20,20 C、10,10 D、输出有二义性,不确定二、填空题1、在C+中派生类时,可以有 (1) 、 (2) 和 (3) 三种不同的方式。2、公有派生类不能访问基类的 (4) 成员,但是派生类可以访问基类的 (5) 成员和 (6) 成员。3、构造函数不能被继承,因此,派生

26、类的构造函数必须通过调用 (7)构造函数进行初始化基类的对象。4、保护派生具有双重作用:对 (8) ,具有公有性,对其他外部,具有(9) 。 5、在多重派生中,要使公共基类在派生类中只有一个拷贝,必须将该基类说明为 (10) 。 第五章 多态性一、单选题1、 下列运算符中,_运算符在C+中不能重载。A、 ? : B、+ C、 D、 B、 C、 : D、3、 在C+中,通常重载运算符的成员函数称为_。A、运算符函数 B、重载函数C、函数重载运算符 D、以上都不对4、 下列函数中,_不能重载。A、成员函数 B、非成员函数 C、析构函数 D、构造函数5、 系统在调用重载函数时,往往根据一些条件确定哪

27、个重载函数被调用,在下列选项中,不能作为依据的是_。A、参数的个数 B、参数的类型C、参数的顺序 D、函数的类型6、 下列对重载函数的描述中,_是错误的。A、重载函数中不允许使用默认参数B、重载函数中编译是根据参数表进行选择的C、一般情况下,不要使用重载函数来描述毫无相干的函数D、构造函数重载将会给初始化带来多种方式7、 下列关于运算符重载的描述中,_是正确的。A、运算符重载可以改变运算符的个数B、运算符重载可以改变优先级C、运算符重载可以改变结合性D、运算符重载不可以改变语法结构8、要实现动态联编,派生类中的虚函数_。A、参数个数必须与函数的原型相同,参数类型可以与函数的原型不同B、参数类型

28、必须与函数的原型相同,返回类型可以与函数的原型不同C、参数个数、类型和顺序必须与函数的原型相同,返回类型必须与函数的原型相同、以上都对9、关于虚函数的描述中,_是正确的。A、虚函数是一个static类型的成员函数B、虚函数是一个非成员函数C、基类中说明了虚函数后,派生类中对其对应的函数可不必说明为虚函数D、派生类的虚函数与基类的虚函数具有不同的参数个数和类型10、_是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。A、虚析构函数 B、虚构造函数C、纯虚函数 D、静态成员函数 11、对于以下类定义,下面正确的叙述是 ( ) class A public: v

29、irtual void func1( ) void func2( ) ; class B:public A public: void func1( )cout class B func 1 end1; virtual void func2( )cout class B func 2 end1; ; A、 A:func2( ) 和 B:func1( ) 都是虚函数 B、A:func2( ) 和 B:func1( ) 都不是虚函数 C、B:func1( ) 是虚函数,而 A:func2( ) 不是虚函数 D、B:func1( ) 不是虚函数,而 A:func2( ) 是虚函数12、假定要对类AB定

30、义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: 。A、AB operator+(AB & a , AB & b) B、AB operator+(AB & a)C、operator+(AB a) D、AB & operator+( )13、下面是对虚函数的的正确描述 。A、虚函数不能是友元函数 B、构造函数可以是虚函数C、析构函数不可以是虚函数 D、虚函数可以静态成员函数 二、填空题1、 C+ 支持的两种多态性分别是_多态性和_ 多态性。2、 静态编联通过 和 实现,动态编联通过 和 实现。3、 函数重载时,须符合 相同和 、 、 之一至少不同四个

31、条件4、运算符重载的两种方法: 和 。参考答案第一、二、六、七章习题答案一、选择题:1、C 2、A3、A4、A5、D6、D7、A8、A9、D10、D11、A12、C13、B14、B15、C16、A二、填空题1、 继承、多态2、公有3、类型个数4、内置5、相同的6、:7、500 1000 5005008、289、30060010、x=1.6 y=16 z=C X=1.6 y=2 z=C11、ABCDEFXHI12、iostream.hstring.h13、(两个空格) 7890 789014、646464第三章 类和对象一、选择题1、D 2、A 3、D 4、C 5、C 6、A 7、A 8、A 9

32、、C 10、B11、C 12、D13、C14、C15、C16、A17、D 18、C 19、A 20、A二、填空题1 某个对象的引用2 值传递,地址传递,引用传递3 public, private, protected4 私有或private5 Private, protected, public6 构造函数7 18 静态9 a 是类Sample 的对象引用,用来作函数Set ( )的形参10类名:11当前对象的地址12 Constructori = 10i = 2013 n=10, k=3n=20, k=3n=30, k=314 5 6 715Constructing A Constructi

33、ng B Destructing B Destructing A 第四章 派生类与继承一、选择1、C 2、C 3、D 4、C 5、A 6、C 7、C 8、B 9、D 10、B 11、B 12、A 13、C 14、D 15、B二、填空题1、私有派生 2、公有派生 3、保护派生4、私有成员 5、保护成员 6、公有成员7、基类8、派生类 9、私有性10、虚基类第五章 多态性参考答案一、单选题1、A 2、C 3、D 4、C 5、D 6、A 7、D 8、C 9、C 10、A 11、C 12、B 13、A 二、填空题1、编译时的(或静态) 运行时的(或动态)2、函数重载 运算符重载 继承 虚函数3、函数名 形参个数 形参类型 形参顺序4、友员运算符函数 成员运算符函数13

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 项目管理


经营许可证编号:宁ICP备18001539号-1