版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.C+面向对象程序设计复习试题类型 1、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。15题,每小题2分,共30分) 主要从作业题目中抽出来2. 填空题。(10题,每小题3分,共30分)3、阅读程序,写出程序运行结果。【也称计算题】( 3题,每小题5分,共15分)4、程序编制题【也称综合分析题】。 (第1、2题每题8分,第3题9分,共25分) 重点复习内容打*号是重点,打号是编程题出题范围* 基本概念,对象,消息,类。面向对象系统特性,封装性,继承性,多态性。* C+类的构成,类与对象,构造与析构,动态存储,类嵌套。静态成员,对象数组,友元。*函数
2、重载。运算符重载。*引用定义与引用参数* 基类与派生类的定义。* 基类及派生类的访问权(含派生类对基类的访问、通过派生类对象对基类的访问)和初始化。多继承与虚基类。*多态性与虚函数。纯虚函数、抽象类。*函数模板。*使用类来定义对象并在程序中的应用 题型样题填空题 1. 假定AB为一个类,则执行“AB a10;”语句时,系统自动调用该类的构造函数的次数为_。 答案:10 2.可以用p.a的形式访问派生类对象P的基类成员a,其中a是_。 答案:公有继承的公有成员 3.能作为重载函数的调用的依据是_。 答案:参数个数 、参数类型 4.在进行完任何C+流的操作后,都可以用C+流的有关成员函数检测流的状
3、态;其中只能用于检测输入流是否结束状态的操作函数名称是_ 答案:eof 5.函数重载是指_。 答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 6.在派生类中重新定义虚函数时必须在 _ 方面与基类保持一致。 答案:参数个数 阅读程序例题【计算题】1分析以下程序的执行结果 #include<iostream.h> class Sample int x,y; public: Sample() x=y=0; Sample(int a,int b) x=a;y=b; Sample() if(x=y) cout<<“x=y”<<endl; else c
4、out<<“x!=y”<<endl; void disp() cout<<“x=”<<x<<“,y”=<<y<<endl; ; void main() Sample s1,s2(2,3); s1.disp(); s2.disp(); 解: x=0,y=0 x=2,y=3 x!=y x=y2.分析以下程序的执行结果 #include<iostream.h> int add(int x,int y) return x+y; int add(int x,int y,int z) return x+y+z;
5、 void main() int a=4,b=6,c=10; cout<<add(a,b)<<,<<add(a,b,c)<<endl; 解: 10,20 3.分析以下程序执行结果 #include<iostream.h> int add(int x,int y) return x+y; double add(double x,double y) return x+y; void main() int a=4,b=6; double c=2.6,d=7.4; cout<<add(a,b)<<",&quo
6、t;<<add(c,d)<<endl; 解: 10,10 4.分析以下程序执行的结果 #include<iostream.h> class Sample int x,y; public: Sample()x=y=0; Sample(int a,int b)x=a;y=b; void disp() cout<<"x="<<x<<",y="<<y<<endl; ; void main() Sample s1,s2(1,2),s3(10,20); Sample *p
7、a3=&s1,&s2,&s3; for(int i=0;i<3;i+) pai->disp(); 解: x=0,y=0 x=1,y=2 x=10,y=20 5. 分析以下程序的执行结果: #include<iostream.h> class base int n; public: base(); base (int a) cout << "constructing base class" << endl; n=a; cout << "n= "<< n <
8、< endl; base() cout << "destructing base class" << endl; ; class subs : public base int m; public: subs(int a, int b) : base(a) cout << "constructing sub class "<< endl; m=b; cout << "m= "<< m << endl; subs() cout << &q
9、uot;destructing sub class "<< endl; ; void main () subs s(1,2); 解: constructing base classn= 1constructing sub classm= 2destructing sub classdestructing base class 6.分析以下程序的执行结果: #include <iostream.h> class Sample protected: int x; public: Sample() x=0; Sample(int val) x=val; void o
10、perator+() x+; ; class Derived:public Sample int y; public: Derived():Sample() y=0; Derived(int val1,int val2):Sample(val1) y=val2; void operator-() x-;y-; void disp() cout<<"x="<< x << ",y=" << y << endl; ; void main () Derived d(3,5); d.disp(); d+;
11、 d.disp (); d-; d-; d.disp(); 解: x=3,y=5x=4,y=5x=2,y=3 7 分析以下程序执行结果: #include <iostream.h> class A public: A(char *s) cout << s << endl; A() ; class B:public A public: B(char *sl,char *s2) :A(sl) cout << s2 << endl; ; class C:public A public: C(char *sl,char *s2) :A(sl)
12、 cout << s2 << endl; ; class D:public B,public C public: D(char *sl,char *s2,char *s3,char *s4) :B(sl,s2),C(sl,s3) cout << s4 << endl; ;void main () D d("class A","class B","class C","class D"); 解: class A class B class A class C class
13、D 补充例题1.分析以下程序的执行结果 #include<iostream.h> template <class T> T max(T x,T y) return (x>y?x:y); void main() cout<<max(2,5)<<“,”<<max(3.5,2.8)<<endl; 解答:5,3.5 2分析以下程序的执行结果 #include<iostream.h> void main() int a=10,20,30,40,*pa=a; int *&pb=pa; pb+; cout<
14、;<*pa<<endl; 解答:输出为:20 3.分析以下程序的执行结果 #include<iostream.h> template <class T> T abs(T x) return (x>0?x:-x); void main() cout<<abs(-3)<<“,”<<abs(-2.6)<<endl; 解答:输出为:3,2.6 4.分析以下程序的执行结果 #include<iostream.h> class Sample char c1,c2; public: Sample(ch
15、ar a)c2=(c1=a)-32; void disp() cout<<c1<<“转换为”<<c2<<endl; ; void main() Sample a('a'),b('b'); a.disp(); b.disp(); 解答:a转换为A b转换为B 5.分析以下程序的执行结果 #include<iostream.h> void main() int a; int &b=a; / 变量引用 b=10; cout<<“a=”<<a<<endl; 解答:输出
16、为:a=10 6.分析以下程序的执行结果 #include<iostream.h> class Sample int x; public: Sample(); Sample(int a)x=a; Sample(Sample &a)x=a.x+ +10; void disp()cout<<“x=”<<x<<endl; ; void main() Sample s1(2),s2(s1); s1.disp(); s2.disp(); 解答:x=3 / +运算的结果 x=12 / 2+10 7.分析以下程序的执行结果 #include<io
17、stream.h> class Sample int x; public: Sample(); Sample(int a)x=a; Sample(Sample &a)x=a.x+1; void disp()cout<<“x=”<<x<<endl; ; void main() Sample s1(2),s2(s1); s2.disp(); 解答:输出为:x=3。 程序编制题例题【综合分析题】例1,写出一个梯形类,操作有求面积和周长分析:由于要求梯形的面积和周长,那就要为梯形提供上底,下底,高,左边长,右边长等属性。因此,梯形类描述为:Class
18、echelon Int top,bottom,height,llength,rlength; Public: Echelon( ) 。 /构造函数 Int Area( ) 。 /求面积 Int Perimeter( ) 。 /求周长 2. 设计一个圆类circle和一个桌子类table,另设计一个圆桌类roundtable,它是从前两个类派生的,要求输出一个圆桌的高度、面积和颜色等数据。 解: circle类包含私有数据成员radius和求圆面积的成员函数getarea();table类包含私有数据成员height和返回高度的成员函数getheight()。roundtable类继承所有上述类
19、的数据成员和成员函数,添加了私有数据成员color和相应的成员函数。本题程序如下: #include<iostream.h> #include<string.h> class circle double radius; public: circle(double r) radius=r; double getarea() return radius*radius*3.14; ; class table double height; public: table(double h) height=h; double getheight() return height; ;
20、class roundtable : public table,public circle char *color; public: roundtable(double h, double r, char c) : circle (r) , table (h) color=new charstrlen(c)+1; strcpy (color, c); char *getcolor() return color; ; void main() roundtable rt(0.8,1.2,黑色); cout << 圆桌属性数据: << endl; cout <<
21、高度: <<rt.getheight() << 米 << endl; cout << 面积: <<rt.getarea() << 平方米 << endl; cout << 颜色: <<rt.getcolor() << endl; 3.编写程序,定义一个类test,其成员数据及函数要求如下:(1)私有数据成员int data(2)构造函数两个test () 及test(int d),前者将()中的数据成员data值设为0;后者将()中的数据成员data设定为指定值d(3)成员函
22、数int setdate()能在键盘读入一个数值,然后将该数值赋给data 4.定义一个抽象类tea代表茶叶,它有个double类型的保护数据成员cost代表种植成本,它还有一个纯虚函数price用来计算售价:double price(void)函数返回值为茶叶的售价。由tea派生出具体类blacktea(红茶),要求如下:(1)类中定义保护成员数据double o_cost,表示红茶的经营成本(2)定义构造函数blacktea(double btc,double bto_c),将cost 和o_cost,数据成员设定为指定值(3)重载price计算出blacktea 的售价。(假设:blac
23、ktea 售价 =(cost + o_cost)*1.2)5.编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。 分析: 设计一个学生类Stud,除了包括no(学号)、name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。在main()函数中定义了一个对象数组用于存储输入的学生数据。 本题程序如下: #include<stdio.h> #include<s
24、tring.h> #define N 3 class Stud int no; char name10; int deg; static int num; static int sum; public: void setdata(int n,char na,int d) no=n; deg=d; strcpy(name,na); sum+=d; num+; static double avg() return sum/num; void disp() printf( %-5d%-8s%3dn,no,name,deg); ; int Stud:sum=0; int Stud:num=0;
25、void main() Stud stN; int i,n,d; char na10; for(i=0;i<N;i+) printf(输入学号 姓名 成绩:); scanf(%d%s%d,&n,na,&d); sti.setdata(n,na,d); printf(输出数据n); printf( 学号 姓名 成绩n); for(i=0;i<N;i+) sti.disp(); printf( 平均分=%gnn,Stud:avg(); 本程序的执行结果如下: 输入学号 姓名 成绩: 1 stud1 89 输入学号 姓名 成绩: 2 stud2 78 输入学号 姓名 成绩
26、: 3 stud 84 输出数据 学号 姓名 成绩 1 stud1 89 2 stud2 78 3 stud3 84 平均分=83 6请编写一个程序,以实现在屏幕上显示如下的乘法表。1) 1 2) 2 4 3) 3 6 9 4)4 8 12 16 5)5 10 15 20 25 6)6 12 18 24 30 36 7) 7 14 21 28 35 42 49 8)8 16 24 32 40 48 56 64 9) 9 18 27 36 45 54 63 72 81 7. P463-P464 函数模板 需要掌握的内容面向对象程序设计的三大特征类和对象类: C+的一种数据类型,使用类的变量则称为
27、对象。C+的类是对象的抽象,是进行封装和数据隐藏的工具,包括:数据成员和成员函数。一个类可以声明多个对象,对象之间代码共享,数据独立。C+类的说明public :可被本类以外的函数访问,是类与外部的接口;private :只能被该类成员函数和友元函数存取和调用;protected:可被本类和本类的派生类的成员函数访问,用于类的继承。成员函数默认时在类中定义的项都是私有的,类成员函数的外部实现:使用对象名引用对象的公有成员函数。方法如下:对象名.成员函数名(参数列表)内联函数的概念;定义内联函数的两种格式1)函数体放在类体内2)函数体放在类体外,使用inline关键字构造函数构造函数的作用是在对
28、象被创建时为对象分配内存空间,对类的数据成员初始化并执行对象的其他内部管理操作。构造函数与类同名构造函数可接收参数但不能有返回值,允许重载。当创建一个类的对象时,系统会自动调用类的构造函数。若未给类定义构造函数,则编译系统将为该类生成一个默认的构造函数,它没有参数,只简单地把对象中的每个实例变量初始化为0。析构函数 一、 C+语言概述1. 了解C+语言的基本符号。2. 了解C+语言的词汇(保留字、标识符、常量、运算符、标点符号等)。 3. 掌握C+程序的基本框架(结构程序设计框架、面向对象程序设计框架等)。4. 能够使用Visual C+ 6.0集成开发环境编辑、编译、运行与调度程序。二、 数
29、据类型、表达式和基本运算1. 掌握C+数据类型(基本类型,指针类型)及其定义方法。2. 了解C+的常量定义(整型常量,字符常量,逻辑常量,实型常量,地址常量,符号常量)。3. 掌握变量的定义与使用方法(变量的定义及初始化,全局变量,局部变量)。4. 掌握C+运算符的种类、运算优先级和结合性。5. 熟练掌握C+表达式类型及求值规则(赋值运算,算术运算符和算术表达式,关系运算符和关系表达式,逻辑运算符和逻辑表达式,条件运算,指针运算,逗号表达式)。三、 C+的基本语句1. 掌握C+的基本语句,例如赋值语句、表达式语句、复合语句、输入、输出语句和空格语句等。2. 用if语句实现分支结构。3. 用sw
30、itch语句实现多分支选择结构。4. 用for语句实现循环结构。5. 用while语句实现循环结构。6. 用dowhile语句实现循环结构。7. 转向语句(goto,continue,break和return)。8. 掌握分支语句和循环语句的各种嵌套使用。四、 数组、指针与引用1. 掌握一维数组的定义、初始化和访问,了解多维数组的定义、初始化和访问。2. 了解字符串与字符数组。3. 熟练掌握常用字符串函数(strlen,strcpy,streat,strcmp,strstr等)。4. 指针与指针变量的概念,指针与地址运算符,指针与数组。5. 引用的基本概念,引用的定义与使用。注意事项: 搞清楚
31、指针与地址运算符的区别,指针与引用的区别。五、 掌握函数的有关使用1. 函数的定义方法和调用方法。2. 函数的类型和返回值。3. 形式参数与实在参数,参数值的传递。4. 变量的作用域、生存周期和存储类别(自动、静态、寄存器,外部)。5. 递归函数。6. 内联函数。7. 带有缺省参数值的函数。注意事项:C+中,函数之间传递参数有传值和传地址两种传递方式。 六、 熟练掌握类与对象的相关知识1. 类的定义方式、数据成员、成员函数及访问权限(public,private,protected)。2. 对象和对象指针的定义与使用。3. 构造函数与析构函数。4. 静态数据成员与静态成员函数的定义与使用方式。
32、5. 常数据成员与常成员函数。6. This指针的使用。7. 友元函数和友元类。8. 对象数组与成员对象。七、 掌握类的继承与派生知识1. 派生类的定义和访问权限。2. 继承基类的数据成员与成员函数。3. 基类指针与派生类指针的使用。4. 虚基类。八、 了解多态性概念1. 虚函数机制的要点。2. 纯虚函数与抽象基类,虚函数。3. 了解运算符重载。九、 模板1. 掌握简单了解函数模板的定义和使用方式。2. 掌握类模板的定义和使用方式,能够写出模板类呈现。十、 输入输出流1. 掌握C+流的概念。2. 能够使用格式控制数据的输入输出。3. 掌握文件的I/O操作。 详细的复习内容一、C+语言语法基础1
33、、标识符是以字母或下划线开头,由字母、数字、下划线组成的用来标识变量、函数、自定义类型的符号,它不能是C或C+的保留字。2、变量声明与数据类型变量的声明如右: 类型名称 变量名,变量名=初值;指针变量的声明: 类型名称 *变量名;数组的声明: 类型名称 数组名数组元素个数=初值,初值,初值;标准数据类型: bool char int long unsigned float double标准类型可以强制类型转换 例如:float x;int y=(int)x;自定义数据类型: 结构struct 联合union 类class 定义方式: struct 自定义类型名成员变量类型 成员变量名; 类类型
34、除外3、运算符与表达式运算符:一元运算符: +、-、*、& 等二元运算符: +、-、*、/、+=、|、&& 等三元运算符: ?:分量运算符: ->、.下标运算符: 括弧运算符: ( )动态存储运算符:new、delete注意在一个表达式中运算符的优先级。其中尤其要注意+、-、->、.、*、&、=运算符。4、C或C+语句五种语句: 表达式语句: 例如: y=x*3+4;空语句:;控制语句: 例如: break; if ( * ) else函数调用语句: 例如: printf( * );复合语句: 例如: x=9+y*5; cout<<x;除
35、了复合语句以 号结束外,其余的语句全是用 ;结束。语句可以混合使用: 例如 if (x!=3) y=7;printf(“%d”,x*y); 其中有复合、控制、表达式、函数调用语句。5、三种程序结构1)顺序结构2)分支结构 用if else switch casedefault break 等控制。3)循环结构 用 for while dowhile break continue 控制6、函数函数在C或C+中就是子程序函数的声明 返回类型 函数名(参数类型 形式参数名,) 函数体return 返回值; 其中void型函数无return 语句。如果不立即写出函数的实现,只是一个函数原形的声明,可以
36、省略形式参数,如下:返回类型 函数名(参数类型,);函数的参数可以缺省,例如: int f2 (int x, int y=8) 同名函数如果参数的个数或类型不同,编译器能自动识别该调用那一个函数,这叫函数重载,例如: void f2 ( ) 与 void f2 (int x) 7、指针指针就是地址,指针声明见变量声明一节,指针指向同类变量: 指针名=&变量名;取得指针指向的地址中的内容:*指针名指针可以运算和赋值,但不能直接赋值数字,赋零除外,这时零表示空指针。数组名就是固定指向数组开头的常数指针。8、结构结构的声明见变量声明,用结构类型定义变量:C中 struct 结构名 变量名;C
37、+中 结构名 变量名;结构成员变量的访问: 通过结构变量: 结构变量.成员变量 通过结构指针: 指针名->成员变量在C+中结构是类的一种特例,也可以有成员函数,但它与类不同,它的成员缺省时是公有的。二、面向对象的程序设计1、类与对象的概念类是一种自定义类型,是对一类对象的抽象,是对象的模板。对象是一个实体,是类的实例,对象由类建立,对象封装了数据和对数据操作的函数,有一个边界,从外部对对象私有部分的访问是被禁止的,对对象的操作要通过它对外的公共接口(公有区)进行。同类对象有相同的成员函数,相同的数据成员集合,但名字不同,数据成员的值也不一定相同(即对象的状态不同)。对象的数据成员又叫对象
38、的属性,对象的成员函数又叫对象的方法,调用对象的方法叫向对象发送消息。对象之间靠消息联系。面向对象的程序设计就是向未知对象发送消息的程序设计,面向对象的程序就是一组通信的对象。2、类的声明class 类名:public 基类1名,public 基类2名,private:类的私有成员,从对象外部不能访问,它的派生类也不能访问,只能它自己访问。protected:类的保护成员,从对象外部不能访问,它的派生类和它自己可以访问。public:类的公有成员,对外公开的、可以任意访问的成员。;成员变量的声明:在类的中象普通变量一样进行声明,但不能赋初值。成员变量在对象中是这个对象的所有成员函数的全局变量。
39、成员函数的声明:在类的中先声明函数的原形,再在类的之外:返回类型 类名:函数名(参数类型 形式参数名,) 函数体 3、对象定义与使用直接定义对象: 类名 对象名(构造函数实际参数);通过定义类指针定义对象: 类名 *指针名; 指针名=new 类名(构造函数实际参数);通过定义类指针定义的对象需要用删除: delete 指针名;直接定义对象数组: 类名 数组名数组元素个数;在定义对象数组时初始化数组:类名 数组名数组元素个数=类名(构造参数),;通过类指针定义数组: 指针名=new 类名数组元素个数;通过类指针定义对象数组不能调用带参数的构造函数对数组进行初始化。通过类指针定义的数组的删除: d
40、eltet 指针名;使用对象成员:直接定义的对象: 对象名.成员名通过指针定义的对象: 指针名->成员名一维对象数组元素的访问: 数组名下标.成员名 或 (*(数组名+下标).成员名 指针名下标.成员名 或 (*(指针名+下标).成员名每个对象都有一个指向自己的常数指针,即this指针。在计算机中所有同类对象有不同的数据成员,但是只有共同的一组成员函数,成员函数靠this指针来识别是来自哪一个对象的调用。同类对象可以相互赋值。对象间赋值缺省是对应成员的赋值,成员中有指针时通常需要重载赋值号 = 。普通类型变量向对象赋值时会自动调用相应的构造函数建立一个隐藏的临时对象,再进行对象间赋值。4
41、、构造与析构函数构造函数是在用类定义对象时对对象进行初始化的函数,在定义对象时自动被调用。构造函数与类同名,无返回类型,可以有参数,可以重载,可以缺省参数。析构函数是在对象撤消时自动被调用的,作用是用来清除对象动态申请的资源,析构函数与类同名,但前加一个,无参数,不能重载。构造函数和析构函数一般不能显式调用,构造函数在下面三种情况是例外:对象数组初始化,在赋值号右边建立临时隐藏对象供对象赋值用,return 返回对象。拷贝构造函数的参数是同类对象或同类对象的引用,缺省的拷贝构造函数是将样板对象的数据成员对应赋值给新建对象。当数据成员中有指针时,一般需要编写自己的拷贝构造函数。5、静态成员静态成
42、员是同类对象的公共成员,静态成员函数没有this指针,不能直接访问类的普通成员,只能访问静态成员,普通成员函数可以访问静态成员,任何一个对象改变了静态成员变量的值,将改变所有对象的该成员。在类外对静态成员变量的初始化:类型 类:成员变量=初始值;6、友元友元就是让类外的函数或别的类访问私有区,友元不是该类的成员,它破坏封装。友元有三种:友元函数。是类外的一般函数。声明:friend 返回类型 函数名(类 形式参数, );友元成员。是其它类的成员函数。声明:friend 返回类型 其它类名:函数名(类 形式参数, );友元类。别的类。声明:friend class 其它类名;友元可以在类的任何区
43、声明,友元声明是单向的,没有传递性。由于友元没有this指针,所以友元的形式参数是对象或对象的引用。7、类的继承和访问权限派生类继承了基类的成员,可以有公有派生和私有派生。继承关系如下:有的部分被舍弃,反之不能赋值。8、 多继承问题一个类可以有多个基类,如果都是公有继承,在不同继承路径上继承的公共基类,由于在派生类中存在多个副本,会出现访问的二义性问题,要将这些副本合成一个,可以在派生时将这个基类声明为虚基类。9、构造函数和析构函数的调用次序在一个派生类中如果有对象成员,则基类、对象成员和派生类的构造次序如下:先 基类 后 对象成员 最后 派生类对象自身析构的次序与构造次序相反。构
44、造函数和析构函数的调用次序与构造和析构次序相同。构造函数的实现如下:派生类名:构造函数名(参数表):基类1构造函数(参数),基类1构造函数(参数),对象成员1(构造参数表),对象成员2(构造参数表), 派生类对象的构造函数体10、流与流类库流运算符:<< 、>> 流类库:iostream、istream、ostream、ios,ios是istream、ostream的基类,istream和ostream又是iostream的基类,ios是抽象类。使用流类库要在程序前加上:#include “iostream.h”标准输出流:cout 是流向屏幕,它是一个ostream类
45、的对象。标准输入流:cin 是由键盘流入,它是一个istream类的对象。11、函数重载重载是指一个符号可以有多重意义。函数重载参看前面所述。一般函数、普通成员函数、构造函数可以重载,析构函数不能重载。12、操作符重载对于对象与对象、对象与标准类型变量之间的运算,需要对运算符重载。一般可以有成员函数重载和友元函数重载。函数名: operator运算符(参与运算的参数)要注意+、-、<<、>> 运算符的重载,其中<<、>>运算符重载要流类(istream和ostream类)对象或引用作参数和返回值。其中=、()、->只能用成员函数重载。将类类
46、型转换成普通类型与运算符重载类似。普通类型转换成类类型用构造函数实现。13、多态性分为静态的多态性和动态的多态性。静态的多态性用重载实现。动态的多态性是指:同一个消息发给不同对象,对象的反应不同。它是在运行过程中进行连接的,所以由叫动态联编。它的基础是虚函数。14、虚函数与纯虚函数虚函数的声明: virtual 返回类型 函数名(参数表);当用基类指针指向派生类对象时,通过这个指针调用虚函数将首先调用派生类中的实现,如果派生类中没有写这个函数的实现,则调用基类中的实现。虚函数的虚特性可以传递。如果派生类不写虚函数自己的实现,它又要在它的派生类中使用基类虚函数的虚特性,可以编写一个空的虚函数。纯
47、虚函数的声明: virtual 返回类型 函数名(参数表)=0;纯虚函数不需要写它的实现,含有纯虚函数的类叫抽象类,不能建立对象,可以作基类和定义指针。在抽象类的派生类中要写出纯虚函数的实现,否则需要再次声明这个函数是虚函数,这样这个派生类也是抽象类。虚函数实现了动态连接,但在构造和析构函数中调用虚函数时是静态连接,即没有虚特性。15、模板函数模板与模板函数,定义、实例化,模板函数的重载。类模板与模板类,定义、实例化,类模板的派生。 一、单选题 第1题 如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是( ) A、一元运算符 B、二元运算符 C、选项A)和选项B)都可能 D、
48、重载错误 答案:D 第2题 C+ 类体系中,不能被派生类继承的有( )。 A、转换函数 B、构造函数 C、虚函数 D、静态成员函数 答案:B 第3题 以下叙述中正确的是( ) A、构成C+语言程序的基本单位是类 B、可以在一个函数中定义另一个函数 C、 main()函数必须放在其他函数之前 D、所有被调用的函数一定要在调用之前进行定义 答案:A 第4题 设int a=10,b=11,c=12;,表达式(a+b) 的值为( ) A、2 B、0 C、-2 D、1 答案:B 第5题 下列关于构造函数说法不正确的是( ) A、构造函数必须与类同名 B、构造函数可以省略不写 C、构造函数必须有返回值 D
49、、在构造函数中可以对类中的成员进行初始化 答案:C 第6题 设有数组定义:char array=”China",则数组array所占的空间为( ) A、4个字节 B、5个字节 C、6个字节 D、7个字节 答案:C 第7题 若已定义:int a=0,1,2,3,4,5,6,7,8,9,*P=a,i;其中Oi9,则对a数组元素不正确的引用是( ) A、ap-a B、*(& ai) C、pi D、a10 答案:D 第8题 如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是( ) A、一元运算符 B、二元运算符 C、选项A)和选项B)都可能 D、重载错误 答案:D
50、第9题 表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是( ) A、showbase()和eof() B、showpoint()和eof() C、showpoint()和bad() D、showpoint()和good() 答案:B 第10题 下面程序的运行结果为( ) 以下是引用片段:#include void main() for(int a=0,x=0;!x&&a<=10;a+) a+; cout < < a ; A、10 B、11 C、12 D、0 答案:C 第11题 以下各选项组中,均是C+语言关键字的组是( ) A、 public op
51、erator this B、shod string static C、it while= D、private cout printf 答案:A 第12题 在位运算中,操作数每右移一位,其结果相当于( ) A、操作数乘以2 B、操作数除以2 C、操作数乘以4 D、操作数除以4 答案:B 第13题 若定义int k=7,x=12;,则值为3的表达式是( ) A、x%=(k%=5) B、x%=(k-k%5) C、x%=k-k%5 D、(x%=k)-(k%=5) 答案:D 第14题 一个类的友元函数能够访问该类的( ) A、私有成员 B、保护成员 C、公有成员 D、所有成员 答案:D 第15题 设有数
52、组定义:char array=”China",则数组array所占的空间为( ) A、4个字节 B、5个字节 C、6个字节 D、7个字节 答案:C 第16题 下面关于数组的描述错误的是( ) A、在C+语言中数组的名字就是指向该数组第一个元素的指针 B、长度为n的数组,下标的范围是0-n-1 C、数组的大小必须在编译时确定 D、数组只能通过值参数和引用参数两种方式传递给函数 答案:D 第17题 下列关于模板的说法正确的是( ) A、模板的实参在任何时候都可以省略 B、类模板与模板类所指的是同一概念 C、类模板的参数必须是虚拟类型的 D、类模板中的成员函数全部都是模板函数 答案:D 第18题 下列描述正确的是( ) A、表示mn为true或mn& & m B、switc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年蚌埠经济技术职业学院辅导员招聘备考题库附答案
- 雷管制造工岗前生产安全培训考核试卷含答案
- 网球制作工创新方法测试考核试卷含答案
- 木门窗工安全知识考核试卷含答案
- 藏药材种植员安全宣贯水平考核试卷含答案
- 精制盐工安全风险能力考核试卷含答案
- 汽车发动机再制造装调工操作规程考核试卷含答案
- 2024年淮南师范学院马克思主义基本原理概论期末考试题附答案
- 2025年上海电子信息职业技术学院辅导员招聘考试真题汇编附答案
- 2025年云南农业大学辅导员招聘备考题库附答案
- 北京市租赁房屋治安责任书
- 2026年北京市公务员录用考试申论试题及答案
- 医院门诊部2025年度工作总结及2026年工作计划
- 2025年医院停电应急预案演练脚本
- AI在医疗质量控制中的指标优化
- 吸氢机销售课件
- 2、公安检查站治安管控系统解决方案
- 停车场电车起火应急预案
- DB1310-T 369-2025 化学分析实验室玻璃仪器使用规
- 孔源性视网膜脱离课件
- 2025年四川蜀道高速公路集团有限公司招聘工作人员考试笔试备考题库及答案
评论
0/150
提交评论