VC-MFC试题复习题及答案
VC期末考试题及标准答案

武汉大学2021—2021学年上学期面向对象程序设计试卷〔B〕学号:姓名:院系:专业:得分:一、名词解释〔每题5分,共计25分〕〔1〕构造函数:是一种特殊成员函数,它提供了对成员变量进展初始化方法,使得在声明对象时能自动初始化对象〔+2〕;构造函数名称与类名一样〔+1〕;构造函数不能指定任何返回值类型〔+1〕;构造函数可以重载〔+1〕。
〔2〕多态:多态性是面向对象编程一个重要特征〔+1〕,主要表现在函数调用时实现“一种接口,多种方法〞〔+2〕。
多态又分为编译时多态和运行时多态两种〔+2〕。
〔3〕抽象类:抽象类是指这样类,它一些行为〔成员函数〕不给出具体定义〔+2〕,抽象类至少带有一个纯虚函数〔+1〕,抽象类不能用来申明对象,只能作为基类使用,因此它又称为抽象基类〔+2〕。
〔4〕文档模板:在文档/视图构造应用程序中,数据以文档类对象形式存在〔+1〕。
文档对象通过视图对象显示出来,而视图大对象又是框架窗口一个子窗口,并且涉及文档操作菜单和工具栏等资源也是建立在框架窗口上〔+2〕。
这样文档、视图、框架和所涉及资源形成了一种固定关系,这种固定关系就成为文档模板〔+1〕。
也就是说,文档模板描述了对应于每一种类型文档视图和窗口类型〔+1〕。
〔5〕序列化:对象保存和恢复过程称为序列化〔+2〕。
即对象具有保存和加载其状态能力〔+1〕,对象能够在程序运行完毕前将对象当前状态写入永久存储体中,以后在程序运行时通过数据读取而恢复对象状态〔+2〕。
二、简答题〔每题10分,共计40分〕1.简述文档、视图和应用程序框架之间如何相互作用?答:文档、视图和应用程序包含了一系列复杂相互作用过程〔+1〕,稳当和视图交互式通过类共有数据成员和成员函数实现〔+1〕。
一个视图对象只与一个文档对象关联,一个文档可以与多个视图关联,但一个文档对象只反映当前视图变化〔+2〕。
视图中用GetDocument()获取文档对象进展操作〔+1〕;在文档中利用Invalidate(), UpdateAllViews()或SendMessage(WM_PAINT,a,b)调用视图中OnDraw()对文档数据进展绘图〔+3〕;在程序任何地方可以调用AfxGetApp()得到程序框架对象指针,利用框架对象指针可进一步利用GetActiveView()获取程序视图对象,并对其进展操作〔+2〕。
VC-MFC试题复习题及答案

《VC程序设计》试卷1一、单项选择题(每题1分,共20分)1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为〔 B 〕A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为〔 B 〕A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的〔 B 〕A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的选项是〔A 〕A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、以下语句的运行结果为〔 D 〕#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类AB的缺省构造函数和析构函数是〔 A 〕A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,假设对函数未加说明,则函数的隐含类型是〔 A 〕A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、以下说法中正确的选项是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是( B )A、静态成员函数B、友元函数C、构造函数D、析构函数11、对于消息队列的描述正确的选项是〔 D 〕A、在Windows中只有一个消息系统,即系统消息队列。
vc 复习题答案

一、名词1.面向对象技术:全称Oriented Object Technology, 是以对象为单位描述客观世界的一种新技术,其领域包括OO-PL(程序设计语言)、OO-DB。
2.对象:object,是对现实世界任何实体的抽象描述,包含数据以及对数据的操作。
3.类与类库:类(class)是对一组性质相近的客观对象的抽象归纳,它将对象的共性集中起来,形成一个集合。
类库:类(class)——是一种C++数据类型,它能够提供访问某个“类对象”的接口,这个“类对象”由一个名字来标识。
一个类定义包括类的变量和方法,以及实例的变量和方法,它还包含着它的父类的所有变量和方法。
类库(class library)——支持相同应用程序的相关C++类的集合。
对象(object)——是“类”的实例,它对能够修改类状态的属性(数据)和行为(函数)都作了具体实现。
4.MFC:微软基础类(Microsoft Foundation Classes),类库是一些类的集合,其中封装了大量的有用的函数和数据结构,一个成熟的软件开发工具都有一个功能庞大的类库与他匹配,与Visual C++捆绑在一起的是微软基础类MFC。
5.匈牙利命名法:是匈牙利人查尔斯·西蒙尼提出的。
有两条规则:标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型。
在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,这些单词清楚地指出了源代码内那个对象的用途。
如,nCount为一整型变量,bFlag为一Boolean型变量。
基类(base class)——指C++中的一些抽象的、基础性的“大”类,其它类能够通过继承关系由它派生。
派生类(derived class)——由一个基类派生出来的类,它由基类创建,并且继承了该基类的所有特性。
6.类的继承性与派生性:类的派生类:在已有类的基础上定义一个新类,新定义的类称为原有类的派生类或子类,原有的类称为新定义的类的基类或父类,派生类继承了基类所有的属性和行为。
mfc面试题

mfc面试题MFC(Microsoft Foundation Classes)是微软公司开发的一套C++类库,用于进行Windows应用程序的开发。
MFC面试题主要涉及MFC框架的基本概念、使用方法和相关编程技巧。
以下将以问题和答案的形式介绍几个常见的MFC面试题。
问题1:MFC是什么?它的作用是什么?答:MFC全称为Microsoft Foundation Classes,是微软在VisualC++中提供的一组类库。
它的作用是封装了Windows操作系统的API,简化了Windows应用程序的开发过程。
通过使用MFC,开发人员可以更加方便地创建图形界面、响应用户操作和调用系统功能。
问题2:MFC的架构是怎样的?答:MFC的架构可以分为三层:应用程序层、框架层和操作系统层。
应用程序层是开发人员编写的具体应用程序代码,包括窗口类、对话框类、消息处理函数等。
框架层是MFC提供的类库,包括CWinApp、CFrameWnd、CView等类,用于管理应用程序的生命周期、创建主窗口、处理消息等。
操作系统层是Windows操作系统提供的API,MFC通过封装这些API,以提供更高层次的抽象和易用性。
问题3:如何创建一个MFC应用程序?答:创建MFC应用程序的步骤如下:1. 打开Visual Studio,选择创建新项目。
2. 选择Visual C++ -> MFC -> MFC应用程序。
3. 输入项目名称,选择保存位置,点击确定。
4. 在向导中选择应用程序类型(单文档、多文档、对话框等)、界面风格和其他选项。
5. 点击完成,Visual Studio将自动生成一个基本的MFC应用程序框架。
问题4:如何处理MFC中的消息?答:MFC中的消息处理通过消息映射表和消息处理函数完成。
首先,需要在类声明中使用`DECLARE_MESSAGE_MAP()`宏来声明消息映射表。
然后,在类实现中使用`BEGIN_MESSAGE_MAP`和`END_MESSAGE_MAP`宏来定义消息映射表的起止位置。
mfc期末考试试题及答案

mfc期末考试试题及答案# MFC期末考试试题及答案## 一、选择题(每题2分,共20分)1. MFC框架中,哪个类是所有窗口类的基类?A. CObjectB. CViewC. CFrameWndD. CWnd2. 在MFC中,哪个宏用于创建一个对话框资源?A. DECLARE_MESSAGE_MAPB. BEGIN_MESSAGE_MAPC. DDX_CONTROLD. DDX_TEXT3. MFC中,用于处理消息映射的宏是?A. DECLARE_MESSAGE_MAPB. BEGIN_MESSAGE_MAPC. ON_COMMANDD. ON_MESSAGE4. 下列哪个不是MFC中的控件类?A. CButtonB. CComboBoxC. CLabelD. CListBox5. 在MFC中,哪个函数用于绘制窗口的非客户区?A. OnDraw()B. OnEraseBkgnd()C. OnPaint()D. OnNcPaint()6. MFC中,哪个类提供了对数据库的访问?A. CDatabaseB. CRecordsetC. CRecordViewD. CDaoDatabase7. 以下哪个不是MFC中的文档模板?A. CMultiDocTemplateB. CSingleDocTemplateC. CDialogTemplateD. CDocTemplate8. MFC中,哪个类负责管理窗口的生命周期?A. CWinAppB. CDocumentC. CViewD. CFrameWnd9. 在MFC中,哪个宏用于定义消息映射?A. DECLARE_MESSAGE_MAPB. BEGIN_MESSAGE_MAPC. END_MESSAGE_MAPD. IMPLEMENT_MESSAGE_MAP10. MFC中,哪个函数用于响应鼠标点击事件?A. OnLButtonDown()B. OnLButtonUp()C. OnRButtonDown()D. OnMButtonDown()## 二、简答题(每题10分,共30分)1. 简述MFC中CWinApp类的用途和主要功能。
VC-MFC试题复习题及答案

《VC程序设计》试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为( B )A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为( B )A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的( B )A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的是(A )A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、下列语句的运行结果为( D )#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类AB的缺省构造函数和析构函数是( A )A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,若对函数未加说明,则函数的隐含类型是( A )A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是( B )A、静态成员函数B、友元函数C、构造函数D、析构函数11、对于消息队列的描述正确的是( D )A、在Windows中只有一个消息系统,即系统消息队列。
MFC考试复习题0

复习题::局部全局变量的重名问题。
即在局部变量的作用域内,可用“::”对被隐藏的同名全局变量进行访问。
内联函数:消除函数调用时的系统开销,以提高运行速度,合一些小函数,用空间换时间适。
int i和int& ri = i:表示变量ri引用了变量i,这时ri就可看作是i的别名,即它们指向同一个内存单元。
派生类对基类成员的继承关系:基类成员作为派生类成员公有派生私有派生private成员不可直接访问成员不可直接访问成员protected成员protected成员private成员public成员public成员private成员联编的概念与作用:编译时的多态是通过静态联编来实现的。
所谓联编(binding。
亦称束定),就是把函数名与其函数体的程序代码连接(联系)在一起。
静态联编时,系统用实参与形参进行匹配,对于同名的重载函数便根据参数上的差异进行区分,然后进行联编。
从而实现了多态性。
运行时的多态是用动态联编实现的。
动态联编(也称晚联编)是程序运行时才进行的联编。
即当程序调用到某一函数(过程)名时,才去寻找和连接其程序代码,对面向对象程序而言,就是当对象接收到某一消息时,才去寻找和连接相应的方法。
6、可视化开发系统往往集成了一系列系统可用资源和开发工具,主要是指哪些?程序调试工具,包括源程序语法检查、可执行程序修改和运行监视等;可选择并构成具体语句或源程序结构的例程库及Help;资源管理器,包括图形化窗口及组成元素的多种对象的编辑器;应用程序Help和Setup开发工具包;源程序编辑器和编译器;系统函数库和系统函数开发工具。
窗口管理函数实现窗口的创建、移动和修改功能;系统服务函数:实现与操作系统有关的多种功能;图形设备(GDI)函数:实现与设备无关的图形操作功能。
API为应用程序提供Win系统各种特殊函数及数据结构定义;API是Win系统与Win应用程序间的标准程序接口;Win应用程序可以利用上千个标准API函数调用系统功能。
VC_复习题+答案

《VC程序设计》试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为(B)A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为(B)A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的(B)A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的是(A)A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、下列语句的运行结果为(D)#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类AB的造缺省构函数和析构函数是( A )A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,若对函数未加说明,则函数的隐含类型是(A)A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是( B)A、静态成员函数B、友元函数C、构造函数D、析构函数11、对于消息队列的描述正确的是(D)A、在Windows中只有一个消息系统,即系统消息队列。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《VC程序设计》试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行“”MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为( B )A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为( B )A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的( B )A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的是(A )A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、下列语句的运行结果为( D )#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类AB的缺省构造函数和析构函数是( A )A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,若对函数未加说明,则函数的隐含类型是( A )A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中、在类体之外定义的函数成员不能操作该类的私有数据成员 D( B )10、以下不属于成员函数的是、友元函数A、静态成员函数 B、析构函数 D 、构造函数C.D )11、对于消息队列的描述正确的是(消息队列是一个系统中只有一个消息系统,即系统消息队列。
A、在Windows定义的数据结构,用于临时存储消息。
下运行另外,每个正在WindowsB、系统可从消息队列将信息直接发给窗口。
的应用程序都有自己的消息队列。
模块传送到应用程序的消息、系统消息队列中的每个消息最终都要被USERC队列中去。
应用程序的消息对列中存储了程序的所有窗口的全部消息。
D、以上都正确)视)文档对象,一个文档对象能连接(12、一个视图对象能连接( A图对象。
B、多个,一个A、一个,多个D、多个,多个C、一个,一个) B 类库中的类按层次关系可知,CStatic 的直接父类为( MFC13、CFrameWnd 、 D C、CcmdTarget A、CObject B、CWnd键顺序来为控件分组。
C )属性和Tab14、可以利用控件的(Caption 、DC、Group B、Tab stop A、ID)B 、根据对话框的行为性质,对话框可以分为两类:(15 、模式对话框和非模式对话框B、对话框资源和对话框类 A 、消息对话框和模式对话框DC、对话框资源和对话框模板属性。
)没有Caption C 、以下控件中,16(D 、静态控件、编辑控件B、群组框 C A、按钮)引导。
、菜单项助记符前用( B 17$ D、B、& C、# A、%)。
C 18、更新菜单状态的消息是(UPDATE、 B A、WM_COMMANDALIDATEINV D、C、ON_UPDATE_COMMAND_UI。
)19、关于工具栏、菜单和加速键的关系,正确的说法是(C、工具按钮与加速键一一对应BA、工具按钮与菜单必须一一对应、菜单与加速键一一对应D、工具按钮不必与菜单一一对应C获取的设备上下文在退出时,必须调用GetDC( )和20、使用GetWindowDC( ) A )释放设备上下文。
(Detach( ) 、D C、DeleteDC( ) A、ReleaseDC( ) B、delete( ))分1分,共25二、填空题(每空long 个字节,占____2___int开发环境中,型数据占4个字节,short int1、VC++ 个字节。
占_____4____int,并且在循环体中不会修)”;i<10;i++for2、若循环的“头”为“for(int i=1次后结束。
_______9_____改i的值,则循环体将被重复执行3、两个函数的函数名____相同____,但参数的个数或对应参数的类型___不同____时,则称为重载函数。
4、若ch为char型变量,n为int型变量,则下列语句ch = 'a'; n = 3; ch = ch + n;cout<<”ch = ”<< ch;执行的结果是___ch=d_______。
传递。
__引用___另一种是地址传递或中函数的参数传递一种是按值传递,C++、5.6、C++运行时的多态性通过____虚函数____来实现,而编译时的多态性通过__函数重载___来实现。
7 只读成员函数用____const____关键字标识,内联成员函数用___inline____关键字标识。
8、class test{public:static int x;};test t1,t2; t1.x = 25;程序运行到这里时,t2.x的值为_____25_______。
9、所有的文档类都派生于______CDocument__ _______,所有的视图类都派生于:______ CView _______。
10、为解决多继承中因公共基类而产生的二义性问题,C++语言提供了_虚基类___机制。
将公共基类声明为它以后,它在派生类中只产生一个实例。
11、在代码中,使用CWnd::____UpdateData________函数可实现控件与其成员变量之间的数据的传输。
12、列表框ClistBox类的成员函数______AddString________用来向列表框增加列表项,成员函数_____ResetContent_______用来清除列表项所有项目。
13、:________序列化_________ 是指将对象写入永久存储介质或者将对象从永久存储介质中读出的过程。
14、Windows程序中的消息有窗口消息、命令消息和__控件通知__消息三种类型。
15、MFC中的集合类包括数组、列表(链表)、映射(顺序可变)。
16、在进行绘图时,画刷用于指定图形的填充样式,___画笔______用于指定图形的边框样式。
三选择填空题(每空1分,共15分)1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行⑴A的构造函数,接着执行⑵C 的构造函数,然后执行__ _⑶_B__的构造函数,最后才执行⑷ D 的构造函数。
A、基类的对象成员B、派生类的对象成员C、基类D、派生类2、[5] B 代表窗口客户区的显示设备上下文, [6]C 代表整个窗口的显示设备上下文。
A、CPaintDCB、CClientDCC、CWindowDCD、CMetaFileDC3、消息循环的处理过程如下:⑺ A 函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后,⑻ B 把来自键盘的命令翻译成WM_XXX消息命令形式。
⑼ E 函数通知Windows把每个消息分发给相应的窗口函数。
应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。
A、GetMessage( )B、translateMessage( )C、PostMessage( )D、SendMessage( )E、DispatchMessage( )4、常用的CButton类的成员函数中:⑽ A 获得一个按钮控件的选中、选择和聚焦状态;⑾ D 得到一个按钮的选中状态;⑿ C 设置一个按钮的选中状态。
A、GetState( )B、SetState( )C、SetCheck( )D、GetCheck( )E、GetButtonStyle( )5、滚动条类CScrollBar的成员函数规定了滚动条的操作。
设置滚动条的范围使用⒀ C 函数,设置滚动块的位置使用⒁E 函数,获取滚动块的当前位置使用⒂F 函数。
A、SetPosB、SetRangeC、SetScrollRangeD、GetPosE、SetScrollPosF、GetScrollPosG、GetScrollRange四写出下列程序的运行结果(每小题5分,共15分)1、.#include<iostream.h>class A{int *a;public:A(int x){ a=new int(x); cout<<*a=<<*a<<endl; delete a; }};void main(){A x(3), *p;p=new A (5);delete p;}*a=3*a=5class test{2、private:int num;public:test();int GetNum() { return num;}test(); ~;}test::test(){ num=0; }test()~test::<<endl; } ″Destructor is active″{ cout<<void main();{ test x[3]<<endl; ″cout<<″Exiting main}Exiting mainDestructor is activeDestructor is activeDestructor is active#include<iostream.h>、3.class A {public:virtual void fun(){ cout<<I'm class A<<endl; }};class B: public A{public:void fun(){ cout<<I'm class B<<endl; }};class C: public B{public:void fun(){ cout<<I'm class C<<endl; }};void main(){A a,*pA=&a;pA->fun();B b;pA=&b;pA->fun();C c;a=c;a.fun();A &aRef=c;aRef.fun();}I'm class AI'm class BI'm class AI'm class C五、完成程序题(本大题共3小题,每空2分,共12分)。