面向对象程序设计C++复习题.docx

上传人:b****7 文档编号:8903493 上传时间:2023-02-02 格式:DOCX 页数:27 大小:58.71KB
下载 相关 举报
面向对象程序设计C++复习题.docx_第1页
第1页 / 共27页
面向对象程序设计C++复习题.docx_第2页
第2页 / 共27页
面向对象程序设计C++复习题.docx_第3页
第3页 / 共27页
面向对象程序设计C++复习题.docx_第4页
第4页 / 共27页
面向对象程序设计C++复习题.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

面向对象程序设计C++复习题.docx

《面向对象程序设计C++复习题.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计C++复习题.docx(27页珍藏版)》请在冰豆网上搜索。

面向对象程序设计C++复习题.docx

面向对象程序设计C++复习题

面向对象程序设计C++复习题

一、单选题

1.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是(D)

A.公有类型B.私有类型C.保护类型D.友元类型

2.下列关于多态性的描述,错误的是(C)

A.C++语言的多态性分为编译时的多态性和运行时的多态性

B.编译时的多态性可通过函数重载实现

C.运行时的多态性可通过模板和虚函数实现

D.实现运行时多态性的机制称为动态绑定

3.在C++语言中,数据封装要解决的问题是(D)

A.数据的规范化B.便于数据转换

C.避免数据丢失D.防止不同模块之间数据的非法访问

4.使用private修饰的成员变量,以下说法正确的是(A)

A.只能由本类中的函数使用,不能被外面的程序所访问。

B.可以由本类中的函数使用,也可以被外面的程序所访问。

C.只能由本类和派生类中的函数使用。

D.可以在主函数中使用。

5.对类的构造函数和析构函数描述正确的是(A)

A.构造函数可以重载,析构函数不能重载

B.构造函数不能重载,析构函数可以重载

C.构造函数可以重载,析构函数也可以重载

D.构造函数不能重载,析构函数也不能重载

6.下面对静态数据成员的描述中,正确的是(A)

A.静态数据成员是类的所有对象共享的数据

B.类的每个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象调用

7.在VC++语言类体系中,不能被派生类继承的有(B)

A.转换函数B.构造函数C.虚函数D.静态成员函数

8.下面关于句柄正确的说法是(A)

A.句柄是一个标识Windows资源和设备等对象的变量。

B.句柄是用户程序自定义的数据类型。

C.用户程序使用句柄时不需要定义。

D.句柄仅仅是一个抽象的概念,程序中不能使用句柄。

9.下面关于动态链接库正确的说法是(B)

A.动态链接库提供的函数,在编译阶段能够连接到应用程序中。

B.动态链接库提供的函数,在运行阶段能够连接到应用程序中。

C.动态链接库本身不能单独设计、编译和调试。

D.动态链接库的使用使得程序缺乏灵活性。

10.下面关于MFC应用程序中InitInstance函数正确的说法是(D)

A.该函数由用户定义。

B.该函数不需要用户程序覆盖。

C.该函数在WinMain函数内被显式调用。

D.通过应用程序类的全局指针自动调用。

11.为了在程序中显示一个模式对话框,应使用CDialgl类的成员函数(C)

A.ShowWindow()B.Create()

C.DoModal()D.InvalidateRect()

12.为了在程序中显示一个无模式对话框,应使用CWnd类的成员函数(A)

A.ShowWindow(SW_NORMAL)B.Create()

C.DoModal()D.InvalidateRect()

13.对于模式对话框的缺省按钮“OK(确定)”,下面哪种说法是正确的?

(B)

A.单击“OK”,系统认定用户在对话框中的选择或输入无效,对话框退出。

B.单击“OK”,系统认定用户在对话框中的选择或输入有效,对话框退出。

C.单击“OK”,对话框照常运行。

D.单击“OK”,对话框暂停运行。

14.设有语句inti=MessageBox("MFC对话框","提问",MB_YESNO|MB_ICONQUESTION);,下面哪种说法是正确的?

(C)

A.消息对话框有两个按钮“确定”和“取消”,单击“确定”返回IDOK。

B.消息对话框有一个按钮“确定”,单击“确定”返回IDOK。

C.消息对话框有两个按钮“是”和“否”,单击“是”返回IDYES。

D.消息对话框有一个按钮“是”,单击“是”返回IDYES。

15.一个无模式对话框在退出时,应写的代码是(C)

A.DestroyWindow();B.deletethis;

C.DestroyWindow();deletethis;D.CloseWindow();

16.在编辑框内用代码实现剪贴板功能,下面哪个说法是正确的(D)

A.使用UNIT类型变量访问剪贴板函数

B.使用CString类型变量访问剪贴板函数

C.使用int类型变量访问剪贴板函数

D.使用CEdit类型变量访问剪贴板函数

17.关于DDX/DDV技术,下面哪个说法是正确的。

(D)

A.用户只能为一个控件关联一个变量

B.用户可以为同一个控件关联多个变量,变量名可以相同,类型必须不同。

C.用户可以为同一个控件关联多个变量,类型可以相同,变量名必须不同。

D.用户可以为同一个控件关联多个变量,但必须保证变量名不同且类型不同。

18.一个Button控件同时具有OnCommand和BN_CLICKED两个消息处理函数,下面哪个说法是正确的。

(B)

A.优先执行BN_CLICKED消息处理函数

B.优先执行OnCommand消息处理函数

C.同时执行

D.编译错

19.关于函数CListBox:

:

GetText(intnIndex,LPTSTRlpszBuffer),下面的说法哪个是正确的(C)

A.取列表框中选中项的内容

B.取列表框中选中项的索引

C.取列表框中索引为nIndex的内容,送lpszBuffer

D.取列表框中内容为lpszBuffer的索引,送nIndex

20.关于函数CButton:

:

SetCheck

(1),下面的说法哪个是正确的(A)

A.设置复选按钮为选中状态

B.设置复选按钮为非选中状态

C.设置复选按钮为不确定状态

D.该函数不能设置复选按钮状态

21.关于对话框应用程序的初始化代码,下面哪个说法是正确的(B)

A.初始化代码应放在WinMain()函数中

B.初始化代码应放在OnInitDialog()函数中

C.初始化代码应放在对话框类的构造函数中

D.初始化代码应放在用户自定义函数中

22.关于函数CProgressCtrl:

:

SetPos(intnPos),下面的说法哪个是正确的(C)

A.设置进展条的步长B.设置进展条范围的上限

C.设置进展条初始位置D.返回进展条当前位置

23.关于函数CListBox:

:

GetItemDataPtr(intnIndex),下面的说法哪个是正确的(A)

A.取出与索引nIndex的列表项相关联数据的指针,类型为void*

B.取出与索引nIndex的列表项相关联数据的指针,类型CString*

C.取出与索引nIndex的列表项相关联数据的指针,类型int*

D.取出索引nIndex的列表项字符串

24.关于函数SetSel(0,-1),下面的说法哪个是正确的(C)

A.在编辑框内选中第0行文本B.在编辑框内未选中任何文本

C.在编辑框内选中全部文本D.参数范围错

25.关于滚动条的WM_VSCROLL消息映射,下面的说法哪个是正确的(B)

A.在CScrollBar类中进行B.在CDialog类中进行

C.在CFrameWnd类中进行D.在CView类中进行

26.关于函数CProgressCtrl:

:

SteiIt(),下面的说法哪个是正确的(A)

A.使进展条前进一个步长B.使进展条后退一个步长

C.设置进展条初始位置D.返回进展条当前位置

27.关于函数CListBox:

:

GetCurSel(),下面的说法哪个是正确的(B)

A.取列表框中选中项的内容B.取列表框中选中项的索引

C.删除列表框中的选中项D.在列表框中添加一项

28.关于函数UpdateData(),下面哪个说法是正确的(B)

A.数据从相关联的成员变量向控件传输

B.数据从控件向相关联的成员变量复制

C.实现不同控件之间的数据交换

D.实现与不同控件相关联变量的数据交换

29.关于函数CListBox:

:

ResetContent(),下面的说法哪个是正确的(D)

A.更新列表框中的内容

B.删除列表框中的第1项

C.删除列表框中的最后1项

D.删除列表框中的所有项,即清空列表框

30.为使工具栏按钮与对应菜单项功能一致,下面哪个说法是正确的(B)

A.工具栏按钮与对应菜单项的ID相同,工具栏按钮必须重写代码。

B.工具栏按钮与对应菜单项的ID相同,工具栏按钮不用重写代码。

C.工具栏按钮与对应菜单项的ID必须不同,工具栏按钮必须重写代码。

D.工具栏按钮与对应菜单项的标题相同,工具栏按钮不用重写代码。

31.关于消息WM_CONTEXTMENU的说法,下面哪个说法是正确的(A)

A.单击鼠标右键时发送B.单击鼠标左键时发送

C.双击鼠标右键时发送D.双击鼠标左键时发送

32.关于消息BN_CLICKED的说法,下面哪个说法是正确的(B)

A.单击鼠标右键时发送B.单击鼠标左键时发送

C.双击鼠标右键时发送D.双击鼠标左键时发送

33.关与函数OnDraw,下面哪个说法是正确的(A)

A.窗口首次生成时自动调用B.窗口生成后调用

C.窗口消失前调用D.窗口消失后调用

34.关与函数OnNewDocumen,下面哪个说法是正确的(A)

A.创建文档时调用B.打开文档时调用

C.修改文档时调用D.视图第1次连接到文档后,初始显示视图前调用该函数

35.关与函数OnInitialUpdate,下面哪个说法是正确的(D)

A.创建文档时被调用B.打开文档时被调用

C.修改文档时被调用D.视图第1次连接到文档后,初始显示视图前调用该函数

36.对滑动条控件有设置SetRange(0,100,TRUE);SetTicFreq(4);,下面的说法哪个是正确的。

(B)

A.滑动条的刻度线有25根B.滑动条的刻度线有26根

C.滑动条的刻度线有4根D.滑动条的刻度线不确定

37.定义逻辑字体的结构变量,下面哪个定义是正确的?

(B)

A.CFontcfB.LOGFONTlf

C.COLORREFrcD.LOGBRUSHcp

38.设有定义CRectre(10,20,50,60),下面哪个说法是正确的?

(A)

A.定义的矩形左上角顶点坐标是(10,20),右下角顶点坐标是(50,60)

B.定义的矩形左下角顶点坐标是(10,20),右上角顶点坐标是(50,60)

C.定义的矩形右上角顶点坐标是(10,20),左下角顶点坐标是(50,60)

D.定义的矩形右下角顶点坐标是(10,20),左上角顶点坐标是(50,60)

39.下列说法正确的是(B)

A..内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方

B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方

C.类的内联函数必须在类体内定义

D.类的内联函数必须在类体外通过加关键字inline定义

40.下列关于虚基类的描述,错误的是(B)

A.设置虚基类的目的是为了消除二义性

B.虚基类的构造函数在非虚基类之后调用

C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用

D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数

二、添空题

1.在面向对象方法中,类之间共享属性和操作的机制称为____继承____。

2.通过使用new和delete两个运算符进行的分配为动态存储分配。

3.在面向对象的程序设计中,类描述的是具有相似性质的一组对象。

4.在C++中封装性、继承性和多态性是面向对象思想的主要特征。

5.MFC框架程序是从WinMain函数开始执行的。

6.一个const对象只能访问const成员函数。

7.静态成员函数、内联函数和构造函数不能声明为虚函数。

8.在函数体之前加const关键字可以防止覆盖函数,改变数据成员的值。

9.设在程序中使用如下语句申请了一个对象数组:

Point*ptr=newPoint[2];,则在需要释放ptr指向的动态数组对象时,所使用的语句是delete[]ptr;。

10.设有下列代码inta=0;doubleb=0;cin>>a>>b;当用键盘输入1.25时,b=0.25。

11.CWnd的成员函数GetCheckedRadioButton的功能是返回按钮组中被选中按钮的ID。

12.消息WM_COMMAND的参数wParam的高位字是控件的通知代码。

13.消息映射宏DELCARE_MESSAGE_MAP的作用是用来声明对消息映射的支持。

14.CComboBox的成员函数GetCurSel(),在组合框中没有选项时返回CB_ERR。

15.CListBox的成员函数InsertString(-1,“辽宁省”),把“辽宁省”添加到列表框中的位置是最后。

16.CWnd的成员函数GetDlgItemText的功能是获取控件的标题文本。

17.消息SB_THUMBTRACK是在滚动条拖动滚动块时发送。

18.动态链接库可以提高程序模块的灵活性,因为它本身可以单独设计、编译和调试。

19.Windows提供的图形界面接口GDI,使得用户能方便实现图形和文本的输出,不必关心与系统相连的

外部设备特性。

20.句柄是一个对操作系统资源的间接引用。

21.每个MFC应用程序都需要afxwin.h头文件,该头文件定义了MFC的所有类、函数、变量等。

22.每个Win32应用程序都需要Windows.h头文件,该头文件及其所包含的文件定义了Windows所有的数据类型、函数调用、数据结构和符号常量等。

23.可以使用ShowWindow(SW_NORMAL)显示无模式对话框,它是CWnd基类的成员函数。

24.在VC++6.0中,菜单、工具栏、对话框、图标等都被视为资源。

25.Window中的每一个资源都是由标识符来定义的,其中的英文字母不区分大小写。

26.列表框中第1项的索引值是0。

27.CListBox的成员函数GetCurSel(),在列表框中没有选项时返回LB_ERR。

28.消息SB_LINEDOWN是在滚动条向下滚动一行时发送。

29.如工具栏按钮属性的提示项是“加法运算\n加法”,则状态栏显示信息为加法运算。

30.GDI提供高层绘图函数,支持与设备无关的图形显示。

三、问答题

1.简述Windows编程特点。

答案:

Windows程序有如下特点:

①消息驱动机制

在Windows应用程序中,通过接收消息、分发消息、处理消息来和用户进行交互。

②图形设备接口(GDI)

Windows提供了一个抽象的图形界面接口,称为图形设备界面,或简称GDI。

使得用户直接利用系统的GDI函数就能方便实现图形和文本的输出,不必关心与系统相连的外部设备特性。

③基于资源的程序设计

Windows应用程序包含众多图形元素,如光标、菜单、工具栏、位图、对话框等,统称为资源。

VC++提供了很多编辑器对这些资源进行编辑,使得用户可以方便地使用这些资源。

④动态链接库

动态链接库提供的函数,能在Windows程序运行时进行装载和连接。

可提高程序模块的灵活性。

2.简述MFC程序的运行机制。

答案:

①程序运行时,首先定义全局程序对象,系统调用缺省的应用程序类的构造函数,该函数把全局程序对象的地址保存在一个全局指针中。

②此时WinMain()函数接收控制,首先通过全局指针调用应用程序类的InitInstance()函数完成应用程序的初始化。

③InitInstance()函数执行结束,屏幕上显示窗体,WinMain()进入消息主循环,等待接收用户消息。

收到消息后转到系统的Run()函数处理。

④当用户点击退出按钮时,WinMain()调用ExitInstance()函数退出。

3.什么是MFC的消息映射机制?

简述映射一个消息的过程。

答案:

所谓消息映射机制,即指MFC类中将消息与消息处理函数联系起来,一一对应的机制。

映射一个消息的过程由三个部分组成:

①在处理消息的类中,使用消息宏LARE_MESSAGE_MAP()声明对消息映射的支持,并在该宏之前声明消息处理函数。

②使用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏在类声明之后的地方定义该类支持的消息映入口点,所有消息映射宏都添加在这里,当然不同的消息MFC都会有不同的消息映射宏。

③定义消息处理函数,在该函数内添加消息处理代码。

4.简述DDX/DDV技术是如何实现数据交换和数据校验的?

使用时应注意什么问题?

答案:

DDX技术:

DDX将数据成员变量同对话框模板内的控件相连接,使得数据在控件之间很容易地传输。

具体使用如下两个函数:

UpdateData(TRUE)或UpdateData()实现控件数据向相关联的变量复制。

UpdateData(FALSE)实现数据由相关联的变量传给控件。

DDV技术:

DDV技术能根据用户为与控件相关联的变量设定的取值范围,自动对数据进行校验,当超出范围时,发出相应的警告。

注意事项:

在DDX/DDV技术中,允许用户为同一个控件关联多个变量,但必须保证这些变量名是互不相同的,且这些变量在同一个类型不能有多个变量。

5.什么是静态控件?

有哪些静态控件?

答案:

静态控件:

用来显示一个字符串、框、矩形、图标,位图或增强的图元文件。

它可以用来作为标签、框或用来分割其它的控件。

一个静态控件一般不接收用户输入,也不产生通知消息。

静态控件种类:

静态文本,组框,静态图片。

6.什么是按钮控件?

有哪些按钮控件?

简述它们的不同。

答案:

按钮控件:

用来实现一种开与关的输入。

常见的按钮有三种类型:

按键按钮,单选按钮,复选框按钮

按键按钮通常可以立即产生某个动作,执行某个命令,因此也常被称为命令按钮。

单选按钮通常成组出现,分组后每组中只能有一个被选中。

复选框通常成组出现,复选框被选中时,复选框中就加上一个标记,复选框常用的有选中和未选中两种状态,用户可以同时选中多个复选框。

7.什么是文档的序列化?

其过程是怎样的?

答案:

文档的序列化:

使一个类可序列化就是使其具有CArchive的序列化功能,即可以在文档类的Serialize函数中直接通过CArchive引用变量进行该数据的读写操作。

序列化过程:

在MFC中,一个可序列化的类必须是CObject的一个派生类,且在类声明中,需要包含DECLARE_SERIAL宏调用,而在类的实现文件中包含IMPLEMENT_SERIAL宏调用,这个宏有三个参数:

前两个参数分别表示类名和基类名,第三个参数表示应用程序的版本号。

最后还需要重载Serialize函数,使该类的数据成员进行相关序列化操作。

8.简述单文档应用程序中是如何实现文档读写的?

答案:

①当MFCAppWizard创建文档应用程序时,它会自动将“文件(File)”菜单中的“打开(Open)”命令(ID号为ID_FILE_OPEN)映射到CWinApp的OnFileOpen成员函数。

②当MFCAppWizard创建应用程序时,它会自动将“文件(File)”菜单中的“保存(Save)”命令与文档类CDocument的OnFileSave函数在内部关联起来,但用户在程序框架中看不到相应的代码。

③打开和保存文档时,系统都会自动调用Serialize函数。

事实上,MFCAppWizard在创建文档应用程序框架时已在文档类中重载了Serialize函数,通过在该函数中添加代码可达到实现数据序列化的目的。

9.函数OnInitialUpdate和OnNewDocument都可以对文档进行初始化工作,叙述它们的区别。

答案:

函数:

OnInitialUpdate是当应用程序被启动时,或当用户从“文件”菜单中选择了“新建”或“打开”时,视图第1次连接到文档后,在初始显示视图前调用该函数,用户可重载此函数对文档所需信息进行初始化。

这里的初始化主要是对与文档相联系的视图进行,如设置视图大小、是否有滚动功能等。

函数OnNewDocument是当用户从“文件”菜单中选择“新建”命令时,框架首先构造一个文档对象,然后调用该函数,用户可在这里对文档数据进行初始化。

10.什么是列表框和组合框控件?

组合框控件有哪些类型?

答案:

列表框:

是一个列有许多项目让用户选择的控件。

用户可以在其中选择一个或多个项,列表框中的项目数

目可灵活变化,程序运行时可根据需要随时增加或删除。

当列表框中项目很多时,自动提供滚动

功能。

组合框:

常用的项目在组合框中显示,用户可以选择其中一项。

同时还配有一个编辑框,输入组合框中没

有的项。

组合框中的项目数目可灵活变化,程序运行时可根据需要随时增加或删除。

组合框类型:

简单组合框、下拉式组合框和下拉式列表框。

四、程序分析题

1.分析下面的程序

要求:

⑴ 写出程序运行结果。

⑵ 说明语句*this=a;的含义。

#include

classCOne

{

public:

COne(){x=y=0;}

COne(inta,intb){x=a;y=b;}

voidcopy(COne&a);

voidprint(){cout<

private:

intx,y;

};

voidCOne:

:

copy(COne&a)

{

if(this==&a)return;

*this=a;

}

voidmain()

{

COneone,two(3,4);

one.print();

one.copy(two);

one.print();

}

答案:

⑴ 0,0

3,4

⑵ 把形参a获得的某对象的值赋给操作该成员函数的对象。

在本例中,就是将对象two赋给对象one。

2.设有一个对话框应用程序,对话框类名为CEx_RadioDlg,添加了一个Button按钮,ID号为IDC_BUTTON1和4个Radio按钮,ID号分别为IDC_RADIO1~IDC_RADIO4。

分析下面的程序段:

要求:

⑴ 在注释符号//后面对各条语句进行注释,说明该语句的作用。

⑵ 该函数在什么时候被调用?

写出该函数完成的功能。

voidCEx_RadioDlg:

:

OnButton1()

{

CStringstr;

UINTnID1=GetCheckedRadioBu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1