c++考试试题重点剖析

上传人:今*** 文档编号:105871042 上传时间:2019-10-13 格式:DOC 页数:17 大小:81KB
返回 下载 相关 举报
c++考试试题重点剖析_第1页
第1页 / 共17页
c++考试试题重点剖析_第2页
第2页 / 共17页
c++考试试题重点剖析_第3页
第3页 / 共17页
c++考试试题重点剖析_第4页
第4页 / 共17页
c++考试试题重点剖析_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《c++考试试题重点剖析》由会员分享,可在线阅读,更多相关《c++考试试题重点剖析(17页珍藏版)》请在金锄头文库上搜索。

1、一、概念题1类和对象有什么区别和联系? 类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。类是对某一类对象的抽象,而对象是某一种类的实例。2 什么是类的实现? 将类所有未编写函数体的成员函数在类体外全部编写出来。3 this指针的概念是什么? 类中所有的成员函数(静态成员函数除外)都隐含了第一个参数,这个隐含的第一个参数就是this指针,在成员函数的实现代码中,所有涉及对类的数据成员的操作都隐含为对this指针所指对象的操作。4 为什么要引入构造函数和析构函数? 构造函数的作用是为类对象的数据成员赋初值,构造函数在定义类对象时由系统自动调用;在一个对象死亡或

2、者说退出生存期时,系统会自动调用析构函数,因此可以在析构函数定义中,设置语句释放该对象所占用的一些资源。5 什么时候需要自定义拷贝构造函数?若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题? 当有用一个已经存在对象创建一个同类型的新对象的需求时。当对象含有指针数据成员,并用它初始化同类型的另一个对象时,默认的拷贝构造函数只能将该对象的数据成员复制给另一个对象,而不能将该对象中指针所指向的内存单元也复制过去。这样,就可能出现同一内存单元释放两次,导致程序运行出错。6 什么是堆对象?创建和回收堆对象的方法是什么? 堆区用来存放在程序运行期间,根据需要随时建

3、立的变量(对象),建立在堆区的对象称为堆对象,当堆对象不再使用时,应予以删除,回收所占用的动态内存。创建和回收堆对象的方法是使用new和delete运算符。7 为什么需要静态数据成员?静态数据成员的定义和初始化方法是什么? 定义静态数据成员是为了同一个类的不同对象之间共享公共数据成员;用关键字static可以把数据成员定义成静态数据成员;在定义的类被使用前,要对其中的静态数据成员进行初始化,初始化时不必添加关键字static。8 什么是静态成员函数?静态成员函数和非静态成员函数有什么区别? 用关键字static可以把这成员函数定义成静态成员函数。 静态成员函数只能访问类的静态数据成员,不能访问

4、类的非静态数据成员。因为静态成员函数是类的成员,不涉及具体的对象,访问静态成员函数常用类名引导。 非静态成员函数可以访问类的静态数据成员,也可以访问非静态数据成员。因为类的静态成员总是存在的。 静态成员函数和非静态成员函数,最主要的差别是非静态成员函数隐含了第一个参数this指针,静态成员函数不含this指针。9 结构struct和类class有什么异同? struct和class都可以定义类,但是缺省访问权限说明时,struct的成员是公有的,而class的成员是私有的。在C+中,struct可被class代替。10 比较类的三种继承方式public、protected、private之间的

5、区别。 采用public公有派生,基类成员的访问权限在派生类中保持不变,即基类所有的公有或保护成员在派生类中仍为公有或保护成员。public派生最常用,可以在派生类的成员函数中访问基类的非私有成员,可通过派生类的对象直接访问基类的公有成员。采用private私有派生,基类所有的公有和保护成员在派生类中都成为私有成员,只允许在派生类的成员函数中访问基类的非私有成员。private派生很少使用。采用protected保护派生,基类所有的公有和保护成员在派生类中都成为保护成员,只允许在派生类的成员函数和该派生类的派生类的成员函数中访问基类的非私有成员。11 派生类构造函数和析构函数执行的次序是怎样的

6、? 派生类构造函数的执行次序:首先,调用基类构造函数,调用顺序按照它们被继承时声明的基类名顺序执行;其次,调用内嵌对象构造函数,调用次序为各个对象在派生类内声明的顺序;最后,执行派生类构造函数体中的内容。派生类析构函数执行过程与构造函数执行过程相反。即当派生类对象的生存期结束时,首先调用派生类的析构函数,然后调用内嵌对象的析构函数,再调用基类的析构函数。12 什么叫虚基类?有什么作用? 在多重继承中,如果多条继承路径上有一个公共的基类,则在这些路径的汇合点上的派生类会产生来自不同路径的公共基类的多个拷贝,如果用virtual把公共基类定义成虚基类,则只会保留公共基类的一个拷贝。引进虚基类的目的

7、是为了解决二义性问题,使得公共基类在它的派生类对象中只产生一个基类子对象。13 什么是多态性,在C+中是如何实现多态的?多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员函数的再抽象。C+支持的多态有多种类型,重载(包括函数重载和运算符重载)和虚函数是其中主要的方式。14 什么是抽象类,其有何作用?抽象类的派生类是否一定要给出纯虚函数的实现?含有纯虚函数的类称为抽象类。抽象类的主要作用是通过它为一个类族建立一个公共的接口,使它们能够更有效地发挥多态特性。抽象类声明了一组派生类共同操作接口的通用语义,而接口的完整实现,即纯虚函数的函数体,要由派生类自己给出,抽象类只能作

8、为基类被继承使用。抽象类的派生类不一定要给出纯虚函数的实现,没有给出纯虚函数的实现的派生类仍然还是抽象类。15 在C+中能否声明虚构造函数,为什么?能否声明虚析构函数,有什么作用?在C+中不能声明虚构造函数。多态是不同的对象对同一消息有不同的行为特性,虚函数作为运行过程中多态的基础,主要是针对对象的,而构造函数是在对象产生之前运行的,因此虚构造函数是没有童义的。在C+中可以声明虚析构函数。析构函数的功能是在该类对象消亡之前进行一些必要的清理工作,如果一个类的析构函数是虚函数,那么,由它派生而来的所有子类的析构函数也是虚函数。析构函数设置为虚函数之后,在使用指针引用时可以动态联编,实现运行时的多

9、态,保证使用基类的指针就能够调用适当的析构函数对不同的对象进行清理工作。二、填空题1拷贝构造函数使用_作为参数初始化创建中的对象。2在C+中,对于构造函数和析构函数来说,_是可以重载的,而_是不可以重载的。3B类中包含一个A类的成员a,则生成B类的对象时构造函数的调用顺序为_。4类的每一个成员函数(静态成员函数除外)都有一个隐含的参数,叫做_。假设类名为A,则该参数的类型为_。5类的静态成员分为_和_。6声明友元的关键字是_。7如果类A继承了B,则类A称为_,类B称为_。8派生类对基类的继承有三种方式:_、_和_。9如果只想保留公共基类的一个拷贝,就必须使用关键字_把这个公共基类定义为虚基类。

10、10派生类的成员有两种来源,即_和_。11要想访问基类的private成员变量,只能通过基类提供的_进行间接访问。12.重载运算符应仍保持其原有的操作数个数、结合性和_。13.对于双目运算符,若重载为类的成员函数,有_个参数;若重载为友元函数,则有_个参数。14.后缀+重载为类的成员函数(设类名为A)的形式为_,重载为类的友元函数(设类名为A)的形式为_。15.设有一时间类Time,现欲用成员函数方法重载运算符+,实现一个时间与一个整数的相加运算,所得结果为一个新时间,则成员函数的声明语句为_。16C+语言支持的两种多态性分别是编译时的多态性和_的多态性。17联编有两种方式,即_和_。18抽象

11、类必须至少包含一个_。21Windows系统中消息的主要类型有_、_和_。22当用户在窗口中按下鼠标左键时,Windows系统就会自动发送_消息给该窗口,如果程序要对此消息作出反应,则程序中应包含类似_函数。23OnDraw()函数有一个指向_类的指针参数,通过该参数可以直接向视图输出。24应用程序将任何东西画到设备中之前,必须明确索取一个_。25对话框分为_和_两种。26对话框的初始化工作一般在_和_中完成。27MFC中公用对话框有_、_、_、_和_。28视图派生类可以选择_类作其基类,可以实现文本编辑功能。29对于文档类,数据成员的初始化工作是在_函数中完成的。30.如果修改了文档类中的数

12、据,并要求重新显示,要用_或_发出重画消息,引起对OnDraw()的调用。31.当执行cout语句输出endl数据项时,将使C+显示输出屏幕上的光标从当前位置移动到_的开始位置。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;”是该类中的一个成员函数

13、的原型,在该函数体中_向*this或其成员赋值。38.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为_。39.假定用户为类AB定义了一个构造函数“AB(int aa)a=aa;”,该构造函数实现对数据_的初始化。40.作为类的成员函数重载地个运算符时,参数表中只有一个参数,说明该运算符有_个操作数。41.C+有两种联编方式,其中在程序编译时的联编叫做_联编42.虚函数可以是另一类的_函数43.定义虚函数需要用_关键字44.将函数“void vf()”定义为纯虚数的格式是virtual void vf()_45.拥有纯虚函数的类就是_,该类不能产生类的实例46.派生类没有重载基类的纯虚函数,则此派生类也是_47.有如下程序#include class CSAI_A public:virtual void fun()coutA;class CSAI_B:public CSAI_A public:virtual void fun()CSAI_A:fun();coutfun();delete p;执行这个程序的输出结果是()答案:_48. 有如下程序#include const int T=8; void main() int i,s=0; for(i=1;i=T;i+) s+=i*i; couts ; coutendl; 运行结果

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

当前位置:首页 > 高等教育 > 大学课件

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