C++面向对象技术复习题汇总(含答案)
更新时间:2024-05-04 22:24:01 阅读量: 综合文库 文档下载
- 面向对象开发技术推荐度:
- 相关推荐
面向对象程序设计C++
复习资料与答案
第一、二、六、七章习题
一、选择题
1、系统约定C++源程序文件名的缺省的扩展名为( ) A、bcc B、c++ C、cpp D、vcc
2、面向对象的程序设计将数据与( )放在一起,作为一个相互依存、不可分割的整体来处理。
A、对数据的操作 B、信息 C、数据隐藏 D、数据抽象 3、当一个函数无返回值时,函数的类型应定义为( ) A、void B、任意 C、int D、无 4、对于C++的函数,正确的叙述是:
A、函数的定义不能嵌套,但函数的调用可以嵌套 B、函数的定义不能嵌套,但函数的调用不能嵌套 C、函数的定义和调用都不能嵌套 D、函数的定义和调用都可以嵌套 5、下列语句中错误的是( )
A、int *p=new int(10); B、int *p=new int[10] C、int *p=new int; D、int *p=new int[40](0);
6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:( ) A、name[3]=’a’; B、name=”lin”; C、name=new char[5]; D、cout< 7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:( ) A、name[3]=’q’; B、name=”lin”; C、name=new char[5]; D、name=new char(‘q’); 8、假设已经定义:const char *name=”chen”;, 下面的语句中错误的是:( ) A、name[3]=’q’; B、name=”lin”; C、name=new char[5]; D、name=new char(‘q’); 9、下面的类型声明中正确的是:( ) A、int &a[4]; B、int &*p; C、int &&q D、int i,*p=&i; 10、假设定义了函数模板( ) template T max(T x,T y){ return(x>y)?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、提高代码的运行效率 C、加强类的封装性 D、实现多态性 12、设有二个语句:int x[‘a’];cin>>x;则编译器认为( ) A、说明语句int x[‘a’]错 B、二个语句都错 C、语句cin>>x 错 D、二个语句正确,没有语法错 13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( ) A、f(py[10],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) int f(int i,int j){? ? } (4) float k(int x){? ? } 是重载函数。 A、4个全部 B、1和2 C、2和3 D、3和4 16、使用myFile.open(“Sales.dat”,ios::app);语句打开文件Sales.dat后,则( ) A、使输出追加到文件尾部 B、打开一个文件进行读操作 C、打开一个文件进行读和写操作 D、文件以二进制方式打开,默认时为文本文件 二、填空题 1、面向对象的程序设计有四大特征,它们是抽象、封装、 、 。 2、结构体类型中的数据和成员函数默认类型为 。 3、C++要求为每个函数建立原型,以说明函数的名称、参数的 和 ,以及函数返回值。 4、在函数说明前加关键字“inline”,则该函数被声明为 函数,其引入的目的是为了消除函数调用时的开销,以提高运行速度。 5、引用变量与被引用变量占有 内存单元。 6、 运算符能够用于访问当前作用域内与局部变量同名的全局变量。 7、#include { for(int a=1,b=1;a<=5;a++) { if(b>=8) break; if(b%2==1){b+=7;continue;} b-=3; } cout<<”a=”< int x=100; void main(void) 2 { int x=200;x+=::x; {int x=500;::x+=x;} cout< void 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=”< 程序的第二行输出为 ,第三行输出为 。 11、以下程序的输出结果是 。 #include { f(6)=?X?; cout< { return a[i]; } 12、如果C++程序中使用了:cout、strcpy,则必须在程序首部包含文件 和 。 13、#include { int i=7890; cout< 程序的第一行输出为 ,第二行输出为 。 14、#include { int i=100;cout.setf(ios::hex); cout< 以上程序运行的结果是 第三章 类和对象 一、选择题 1、( )不是构造函数的特征。 A、构造函数的函数名与类名相同; B、构造函数可以重载; C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。 2、下列关于构造函数的描述中,( )是正确的。 A、构造函数可以设置缺省参数; B、构造函数可以被继承; C、构造函数可以对静态数据成员进行初始化; D、构造函数可以说明为虚函数; 3 3、( )是析构函数的特征。 A、析构函数可以有一个或多个参数; B、析构函数名与类名不同; C、析构函数的定义只能在类体内; D、一个类中只能定义一个析构函数; 4、定义析构函数时,应该注意( )。 A、其函数名与类名完全相同; B、函数返回类型是void类型; C、无形参,也不可重载; D、函数体中必须有delete语句; 5、下列静态数据成员的特性中,( )是错误的。 A、说明静态数据成员时前边要加修饰符static; B、静态数据成员要在类体外进行初始化; C、静态数据成员不是所有对象所共用的; D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符; 6、友元的作用是( )。 A、提高程序的运用效率; B、加强类的封装性; C、实现数据的隐藏性; D、增加成员函数的种类; 7、关于成员函数特征的下列描述中,( )是错误的。 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为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构 造函数的次数为( )。 A、 3 B、 4 C、 6 D、 9 11、通常拷贝初始化构造函数的参数是( )。 A、某个对象名 B、某个对象的成员名 C、某个对象的引用名 D、某个对象的指针名 12、有关类的说法不正确的是( )。 4 A、类是一种用户自定义的数据类型 B、只有类中的成员函数才能存取类中的私有数据 C、在类中,如果不作特别说明,所有的数据均为私有类型 D、在类中,如果不作特别说明,所有的成员函数均为公有类型 13、在声明类时,下面说法正确的的是( )。 A、可以在类的声明中给数据成员赋初值 B、数据成员的类型可以是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、变量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 CSample(); B public: CSample(int val); C ~CSample(); D 5 }; 20、在类的定义形式中,数据成员、成员函数和( )组成了类定义体。 A、成员的访问控制信息 B、公有消息 C、私有消息 D、保护消息 二、填空题 1. 通常的拷贝初始化构造函数的参数是_________________ 2. 在C++中函数参数的传递方式有三种,分别是:__________、__________和__________。 3. 任何类中允许有三种访问权限的数据,这三种访问权限分别是__________、__________ 和__________。 4. 类中数据成员和成员函数的默认类型为______________ 5. 在类内部定义的__________和__________数据不能被不属于该类的成员函数来存取,定 义为__________的数据,可以在类外部进行存取。 6. __________是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员 进行初始化并执行对象的其他内部管理操作。 7. 一个类中有__________个析构函数。 8. __________成员函数中不能直接引用类中说明的非静态成员。 9. 已知类Sample 中的一个成员函数说明如下: void Set(Sample &a); 其中,Sample &a的含意是_________________ 10.静态数据成员属于类,可以使用_______________ 的方式访问静态的数据成员。 11.编译程序将this指针指向_____________。 12.以下程序的执行结果是__________。 # include Sample () { cout << “constructore” << endl; } }; void fn (int i) { static Sample c; cout << “i=” << i << endl; } void main () { fn (10) ; fn (20) ; } 13. 以下程序的执行结果是_______________。 # include static int k; 6 public: sample(int i) { n=i; k++; }; void disp(); }; void sample:: disp () { cout<<\int sample:: k=0; void main () { sample a(10), b(20), c(30) ; a.disp() ; b.disp(); c.disp(); } 14.以下程序的执行结果是_______________ # include void setx( int i ) { x=i; } int putx( ) { return x; } }; void main ( ) { sample *p; sample A [3]; A[0].setx(5); A[1].setx(6); A[2].setx(7); for (int j=0 ; j<3; j++ ) { p= &A [j] ; cout< } cout< 15.以下程序的执行结果是_______________ #include 7 }; main( ) { A a; B b; return 0; } 第四章 派生类与继承 一、选择 1、 从一个基类派生出的各个类的对象之间 (1) 。 A、共享所有数据成员,每个对象还包含基类的所有属性 B、共享部分数据成员,每个对象还包含基类的所有属性 C、不共享任何数据成员,但每个对象还包含基类的所有属性 D、共享部分数据成员和成员函数 2、 C++的继承性允许派生类继承基类的 (2) 。 A、部分特性,并允许增加新的特性或重定义基类的特性 B、部分特性,但不允许增加新的特性或重定义基类的特性 C、所有特性,并允许增加新的特性或重定义基类的特性 D、所有特性,但不允许增加新的特性或重定义基类的特性 3、 对于公有继承,基类的公有和保护成员在派生类中将 (3) 成员。 A、全部变成公有 B、全部变成保护 C、全部变成私有 D、仍然相应保持为公有和保护 4、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为 (4) 的构造函数。 A、自己所属类、对象成员所属类、基类 B、对象成员所属类、基类、自己所属类 C、基类、对象成员所属类、自己所属类 D、基类、自己所属类、对象成员所属类 5、派生类的对象对其基类中 (5) 可直接访问。 A、公有继承的公有成员 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: void fx ( ); 8 }; 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 operator+(AB & a) C、 operator+(AB a) D、 AB & operator+( ) 11、下面叙述不正确的是 (11) 。 A、派生类可以使用private派生 B、基类的public成员在派生类中仍然是public C、对基类成员的访问必须是无二义性的 D、赋值兼容原则也适合多重继承的组合 12、下面叙述不正确的是 (12) 。 A、基类的protected成员在派生类中仍然是protected B、基类的protected成员在public派生类中仍然是protected C、基类的protected成员在private派生类中仍然是private D、对基类成员的访问必须是无二义性的 13、下面叙述不正确的是 (13) 。 A、成员的访问能力在private派生类中和public派生类中仍是不同的 B、基类的private成员在public派生类中不可访问 C、赋值兼容规则不适合于多重继承的组合 D、public基类成员在protected派生中是protected 14、下面叙述正确的是 (14) 。 A、基类的对象可以赋给派生类 B、只要是基类的对象,都可以赋给由它派生的任一个派生类对象 C、只有该基类直接派生出来的类的对象才可以赋给该基类的对象 D、公有派生类的对象可以赋给基类的对象 15以下程序的输出结果为是 (15) 。 #include class B:virtual public A{}; class C:virtual public A{}; class D:public B,public C { int getn(){return B::n;} }; 9 void main() { D d; d.B::n=10; d.C::n=20; cout< A、10,20 B、20,20 C、10,10 D、输出有二义性,不确定 二、填空题 1、在C++中派生类时,可以有 (1) 、 (2) 和 (3) 三种不同的方式。 2、公有派生类不能访问基类的 (4) 成员,但是派生类可以访问基类的 (5) 成员和 (6) 成员。 3、构造函数不能被继承,因此,派生类的构造函数必须通过调用 (7)构造函数进行初始化基类的对象。 4、保护派生具有双重作用:对 (8) ,具有公有性,对其他外部,具有(9) 。 5、在多重派生中,要使公共基类在派生类中只有一个拷贝,必须将该基类说明为 (10) 。 第五章 多态性 一、单选题 1、 下列运算符中,______运算符在C++中不能重载。 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、要实现动态联编,派生类中的虚函数______。 A、参数个数必须与函数的原型相同,参数类型可以与函数的原型不同 B、参数类型必须与函数的原型相同,返回类型可以与函数的原型不同 C、参数个数、类型和顺序必须与函数的原型相同,返回类型必须与函数的原型相同 10 D、以上都对 9、关于虚函数的描述中,______是正确的。 A、虚函数是一个static类型的成员函数 B、虚函数是一个非成员函数 C、基类中说明了虚函数后,派生类中对其对应的函数可不必说明为虚函数 D、派生类的虚函数与基类的虚函数具有不同的参数个数和类型 10、______是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。 A、虚析构函数 B、虚构造函数 C、纯虚函数 D、静态成员函数 11、对于以下类定义,下面正确的叙述是 ( ) class A { public: virtual void func1( ){ } void func2( ){ } }; class B:public A{ public: void func1( ){cout<< ″ class B func 1 ″ < virtual void func2( ){cout<< ″ class B func 2 ″ < A、 A::func2( ) 和 B::func1( ) 都是虚函数 B、A::func2( ) 和 B::func1( ) 都不是虚函数 C、B::func1( ) 是虚函数,而 A::func2( ) 不是虚函数 D、B::func1( ) 不是虚函数,而 A::func2( ) 是虚函数 12、假定要对类AB定义加号操作符重载成员函数,实现两个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、 函数重载时,须符合 相同和 、 、 之一至少不同 四个条件 4、运算符重载的两种方法: 和 。 参考答案 第一、二、六、七章习题答案 一、选择题: 1、C 6、D 11、A 2、A 7、A 12、C 3、A 8、A 13、B 4、A 9、D 14、B 5、D 10、D 15、C 11 16、A 二、填空题 1、 继承、多态 2、公有 3、类型 个数 4、内置 5、相同的 6、:: 7、500 1000 500 500 8、2 8 9、300 600 10、x=1.6 y=16 z=C X=1.6 y=2 z=C 11、ABCDEFXHI 12、iostream.h string.h 13、(两个空格) 7890 7890 14、64 64 64 第三章 类和对象 一、选择题 1、D 2、A 3、D 4、C 5、C 6、A 7、A 11、C 12、D 13、C 14、C 15、C 16、A 17、D 二、填空题 1. 某个对象的引用 2. 值传递,地址传递,引用传递 3. public, private, protected 4. 私有或private 5. Private, protected, public 6. 构造函数 7. 1 8. 静态 9. a 是类Sample 的对象引用,用来作函数Set ( )的形参 10.类名:: 11.当前对象的地址 12. Constructor i = 10 i = 20 13. n=10, k=3 n=20, k=3 n=30, k=3 14. 5 6 7 15.Constructing A 12 8、A 9、C 10、B 、C 19、A 20、A 18Constructing 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 二、填空题 1、编译时的(或静态) 运行时的(或动态) 2、函数重载 运算符重载 继承 虚函数 3、函数名 形参个数 形参类型 形参顺序 4、友员运算符函数 成员运算符函数 13 、C 12、B 13、A
正在阅读:
C++面向对象技术复习题汇总(含答案)05-04
酒店培训--礼仪的概念06-07
PKP操作技巧及麻醉体位选择进针角度问题11-02
固体物理(黄昆)第五章总结05-21
2019年石榴树市场发展前景分析及供需格局研究预测报告12-05
现代市场调查与预测试卷11-14
原子结构及元素周期表练习题05-07
志愿服务心得_热心防疫,为爱逆行03-16
任职期满考核结果03-10
2012《护理心理学》习题集1答案03-11
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 复习题
- 汇总
- 面向
- 对象
- 答案
- 技术