C++复习题1

上传人:豆浆 文档编号:10613188 上传时间:2017-10-09 格式:DOC 页数:14 大小:106KB
返回 下载 相关 举报
C++复习题1_第1页
第1页 / 共14页
C++复习题1_第2页
第2页 / 共14页
C++复习题1_第3页
第3页 / 共14页
C++复习题1_第4页
第4页 / 共14页
C++复习题1_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《C++复习题1》由会员分享,可在线阅读,更多相关《C++复习题1(14页珍藏版)》请在金锄头文库上搜索。

1、一、概念题1类和对象有什么区别和联系?2什么是类的实现?3this 指针的概念是什么?4为什么要引入构造函数和析构函数?5什么时候需要自定义拷贝构造函数?若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题?6什么是堆对象?创建和回收堆对象的方法是什么?7为什么需要静态数据成员?静态数据成员的定义和初始化方法是什么?8什么是静态成员函数?静态成员函数和非静态成员函数有什么区别?9结构 struct 和类 class 有什么异同?10比较类的三种继承方式 public、protected、private 之间的区别。11派生类构造函数和析构函数执行的次序是怎

2、样的?12什么叫虚基类?有什么作用?13什么是多态性,在 C+中是如何实现多态的?14什么是抽象类,其有何作用?抽象类的派生类是否一定要给出纯虚函数的实现?15在 C+中能否声明虚构造函数,为什么?能否声明虚析构函数,有什么作用?16典型的 Windows 应用程序结构有哪些?17什么是消息?什么是消息映射?18文档类的主要作用是什么?视图类提供的主要函数有哪些?19简述利用 ClassWizard 是如何添加消息映射函数的。20非模式对话框和模式对话框有何区别?二、填空题1拷贝构造函数使用_作为参数初始化创建中的对象。2在 C+中,对于构造函数和析构函数来说,_是可以重载的,而_是不可以重载

3、的。3B 类中包含一个 A 类的成员 a,则生成 B 类的对象时构造函数的调用顺序为_。4类的每一个成员函数(静态成员函数除外)都有一个隐含的参数,叫做_。假设类名为 A,则该参数的类型为_。5类的静态成员分为_和_。6声明友元的关键字是_。7如果类 A 继承了 B,则类 A 称为_,类 B 称为_。8派生类对基类的继承有三种方式:_、_和_。9如果只想保留公共基类的一个拷贝,就必须使用关键字_把这个公共基类定义为虚基类。10派生类的成员有两种来源,即_和_。11要想访问基类的 private 成员变量,只能通过基类提供的_进行间接访问。12.重载运算符应仍保持其原有的操作数个数、结合性和_。

4、13.对于双目运算符,若重载为类的成员函数,有_个参数;若重载为友元函数,则有_个参数。14.后缀+重载为类的成员函数(设类名为 A)的形式为_,重载为类的友元函数(设类名为 A)的形式为_。15.设有一时间类 Time,现欲用成员函数方法重载运算符+,实现一个时间与一个整数的相加运算,所得结果为一个新时间,则成员函数的声明语句为_。16C+语言支持的两种多态性分别是编译时的多态性和_的多态性。17联编有两种方式,即_和_。18抽象类必须至少包含一个_。21Windows 系统中消息的主要类型有_、_和_。22当用户在窗口中按下鼠标左键时,Windows 系统就会自动发送_消息给该窗口,如果程

5、序要对此消息作出反应,则程序中应包含类似_函数。23OnDraw()函数有一个指向_类的指针参数,通过该参数可以直接向视图输出。24应用程序将任何东西画到设备中之前,必须明确索取一个_。25对话框分为_和_两种。26对话框的初始化工作一般在_和_中完成。27MFC 中公用对话框有_、_、_、_和_。28视图派生类可以选择_类作其基类,可以实现文本编辑功能。29对于文档类,数据成员的初始化工作是在_函数中完成的。30.如果修改了文档类中的数据,并要求重新显示,要用_或_发出重画消息,引起对 OnDraw()的调用。31.当执行 cout 语句输出 endl 数据项时,将使 C+显示输出屏幕上的光

6、标从当前位置移动到_的开始位置。32.假定 x 和 y 为整型,其值分别为 16 和 5,则 a/y 和 double(x)/y 的值分别为_ 和 _。33.strlen(“apple”)的值为_ 。34.C+程序运行时的内在空间可以分为全局数据区,堆区,栈区和_区。35.假定 a 是一个一维指针数组,则 a+i 所指对象的地址比 a 大_字节。36.如果一个派生类只有一个唯一的基类,则这样的继承称为_。37.假定 AA 是一个类, “AA * abc()const;”是该类中的一个成员函数的原型,在该函数体中_向*this 或其成员赋值。38.假定用户没有给一个名为 AB 的类定义构造函数,

7、则系统为其定义的构造函数为_。39.假定用户为类 AB 定义了一个构造函数“AB(int aa)a=aa;”,该构造函数实现对数据_的初始化。40.作为类的成员函数重载地个运算符时,参数表中只有一个参数,说明该运算符有_个操作数。41.C+有两种联编方式,其中在程序编译时的联编叫做_联编42.虚函数可以是另一类的_函数43.定义虚函数需要用_关键字44.将函数“void vf()”定义为纯虚数的格式是 virtual void vf()_45.拥有纯虚函数的类就是_,该类不能产生类的实例46.派生类没有重载基类的纯虚函数,则此派生类也是_47.有如下程序#include class CSAI_

8、A public:virtual void fun()coutfun();delete p;执行这个程序的输出结果是()答案:_48. 有如下程序#includeconst int T=8;void main()int i,s=0;for(i=1;iz;if(x+y=z) return 1;else return 0;函数功能:_50. 有如下程序char *f(char *s)int n=strlen(s);char * r=new charn+1;for(int i=0;i=a & si”重载为类 CSAI 的友元函数的格式是:friend instream& operator _56.t

9、his 指针_破坏类的封装性。57.通过指向基类的指针调用派生类对象的函数时,采用_调用。58.下面是对按从小到大排列的有序数组 an中进行二分查找 x 的算法,若查找成功返回该元素的下标,否则返回-1。int BinnarySearch(int a,int n,int x)int low=0,high=n-1; /定义并初始化区间下界和上界变量int mid; /定义保存中点元素下标的变量while(lowclass Achar *a;public:A()a=0; /定义无参构造函数,使 A 的值为空A(char *aa) a= _ ; /进行动态存储分配strcpy(a,aa); /用 a

10、a 所指字符串初始化 a 所指向的动态存储空间_ ; /定义析构函数,删除 a 所指向的动态存储空间;三、编程题1创建一个 Employee 类,该类中有字符数组表示姓名、街道地址、市、省和邮政编码。把表示构造函数、ChangeName 函数、Display 函数的函数原型放在类定义中,构造函数初始化每个成员,Display 函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。2设计并测试类 Point,其数据成员是直角坐标系的点坐标。友元函数 distance 用来计算两点间的距离。3定义一个 Rectangle 类,有宽 width、长 length 等属性,重载其构造函数

11、Rectangle、Rectangle(int width , int length)。4编写一个程序,设计一个 Cdate 类,它应该满足下面的条件。 用这样的格式输出日期:日-月-年。 输出在当前日期上加两天后的日期。 设置日期。5按照下面函数原型语句编写一个递归函数求出并返回数组 a 中 n 个元素的平方和。int f(int a,int n)6根据下面类中 Sum 函数成员的原型和注释写出它的类外定义。class AAint *a;int n;int MS;public:void InitAA(int aa,int nn,int ms) if(nnms)coutarea(); retu

12、rn sum; 9声明一个 Shape 类(形状)基类,它有两个派生类:Circle(圆)和 Square(正方形) ,要求如下。 根据给出的圆心坐标计算圆的面积。 根据给出的正方形中心坐标和一个顶点坐标计算该正方形的面积。提示:Shape 类的数据成员包括中心的坐标,Circle 类和 Square 类由 Shape 类派生,Circle 类新增一个数据成员,即圆的半径,Square 类新增两个数据成员,即顶点坐标。1解答要点:类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。类是对某一类对象的抽象,而对象是某一种类的实例。2解答要点:将类所有未编写函数体

13、的成员函数在类体外全部编写出来。3解答要点:类中所有的成员函数(静态成员函数除外)都隐含了第一个参数,这个隐含的第一个参数就是 this 指针,在成员函数的实现代码中,所有涉及对类的数据成员的操作都隐含为对 this 指针所指对象的操作。4解答要点:构造函数的作用是为类对象的数据成员赋初值,构造函数在定义类对象时由系统自动调用;在一个对象死亡或者说退出生存期时,系统会自动调用析构函数,因此可以在析构函数定义中,设置语句释放该对象所占用的一些资源。5解答要点:当有用一个已经存在对象创建一个同类型的新对象的需求时。当对象含有指针数据成员,并用它初始化同类型的另一个对象时,默认的拷贝构造函数只能将该

14、对象的数据成员复制给另一个对象,而不能将该对象中指针所指向的内存单元也复制过去。这样,就可能出现同一内存单元释放两次,导致程序运行出错。6解答要点:堆区用来存放在程序运行期间,根据需要随时建立的变量(对象) ,建立在堆区的对象称为堆对象,当堆对象不再使用时,应予以删除,回收所占用的动态内存。创建和回收堆对象的方法是使用 new 和 delete 运算符。7解答要点:定义静态数据成员是为了同一个类的不同对象之间共享公共数据成员;用关键字 static 可以把数据成员定义成静态数据成员;在定义的类被使用前,要对其中的静态数据成员进行初始化,初始化时不必添加关键字 static。8解答要点:用关键字 static 可以把这成员函数定义成静态成员函数。 静态成员函数只能访问类的静态数据成员,不能访问类的非静态数据成员。因为静态成员函数是类的成员,不涉及具体的对象,访问静态成员函数常用类名引导。 非静态成员函数可以访问类的静态数据成员,也可以访问非静态数据成员。因为类的静态成员总是存在的。 静态成员函数和非静态成员函数,最主要的差别是非静态成员函数隐含了第一个参数this 指针,静态成员函数不含 this 指针。9解答要点:struct 和 class 都可以定义类,但是缺省访问权限说明时,struct 的成员是公有的,而 class 的成员是私有的。在 C+中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号