VC++复习new

更新时间:2023-10-05 09:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VC++复习题

一、单项选择题

1.以下四个特性中哪一个不属于面向对象的三大特性 (C ) A. 封装性 B. 多态性 C. 抽象性 D. 继承性 2. 下面四个MFC类中哪一个是管理MFC应用程序的 (A ) A. CWinApp B. CMainFrame C. CDocument D. CView 3. 下列类中哪一个不是GDI对象类 (B)

A. CPen B. CWnd C.CBrush D. CRgn 4. 下列关键字中哪一个不是用于类的访问控制的 (B) A. public B. friend C. private D. protected 5. 下列类中不属于MFC框架基本类的是 ( D)

A. CWinApp B. CFrameWnd C. CView D. CObject 6. 下列选项中哪一个不是命令消息的产生途径 (C) A. 选择菜单项 B. 单击工具栏 C. 点击对话框的按钮 D. 程序产生命令 7. 以下四个关于类的访问控制的描述哪一个是错误的 (D ) A.子类不能访问其父类的私有数据成员和成员函数 B.子类的对象不能访问其父类的保护数据成员或者成员函数 C.类的对象不能访问类的保护数据成员或者成员函数 D.类的成员函数不能访问类中的私有数据 8. 下面有关重载函数的说法中正确的是 (C ) A.重载函数必须有不同的返回值类型 B.重载函数形参个数必须不同 C.重载函数必须有不同的形参列表 D.重载函数名可以不同

9. 下列关于构造函数的描述中,错误的是 (D) A.构造函数可以设置默认参数 B.构造函数在定义类对象时自动执行 C.默认构造函数可以没有 D.构造函数不可以重载 10. 用于描述矩形的类是 (D )

A.CPoint B.CSize C.CRectangle D.CRect 11. 所有GDI类均从一个GDI基类派生,这个基类是( D ) A.CBrush B.CPalette C.CRgn D.CGdiObject 12. 视图类中支持绘图的成员函数是( A )。

A.OnDraw B.OnInitUpdate C.OnSize D.OnLButtonDown

13. 一个视图对象能连接( )文档对象,一个文档对象能连接(D )视图对象。A. 多个,多个 B. 多个,一个 C. 一个,一个 D. 一个,多个 14. 更新菜单状态的消息是( C )。 A. WM_COMMAND B. UPDATE C. ON_UPDATE_COMMAND_UI D.INVALIDATE

15. 所有的控件都是 (B ) 类的派生类,都可以作为一个特殊的窗口来处理。 A. CView B. CWnd C. CWindow D. CDialog 16. 以下控件中,( C )没有Caption属性。

1

A. 按钮 B. 群组框 C. 编辑控件 D. 静态控件

17. 设备环境类CDC提供了绘制和打印的全部函数。为了能让用户使用一些特殊的设备环境,CDC还派生了一些类。以下正确的是( A )。

A.CPaintDC、CClientDC、CWindowDC和CMetaFileDC B.CClientZoneDC、CWindowDC、CMetaFileDC、CPaintDC C.CClientDC、CWindowsDC、CMetaFileDC、CPaintDC D.CPaintDC、CClientDC、CWindowDC和CDrawDC

18.窗口CWnd类的( A)函数可以取得窗口客户区尺寸,用于绘图时精确定位。 A.GetClientRect B.GetWindowRect C.GetWindowText D.InvalidateRect

19. 当在使用类模板时,类模板本身被实例化成了一个具体的(D)。 A.对象 B. 实例 C. 模板类 D. 类 20. 通过调用(B)函数,能够设置本地计算机的时间。 A.SetSystemtime(?) B.SetLocalTime(?) C.SetSystemTime(?) D.SetLocaltime(?) 以下为陈志泊课本第二章选择题 21.关于类,下面说法不正确的是( D )。 A.在类中,成员的默认访问特性是私有的 B.类实现了数据的封装 C.类实质上是一种数据类型

D.在类的定义中,必须包含private、public、protect三种访问方式对应的部分 22.关于对象,下面说法不正确的是(C )。 A.对象是类的一个实例 B.任何一个对象只是属于一个类 C.一个类只能有一个对象

D.类与对象间的关系和数据类型与变量间的关系类似 23.关于构造函数,下列说法不正确的是( A )。 A.一个类中有且仅有一个构造函数 B.构造函数在说明类变量时被自动执行 C.构造函数没有返回值类型

D.类中的构造函数的函数名与该类的类名必须同名 24.关于析构函数,下列说法不正确的是( B )。 A.类中有且仅有一个析构函数 B.析构函数可以有形参 C.析构函数没有返回值类型 D.析构函数在对象消失时被自动执行

25.关于类的继承,下列说法不正确的是( A)。

A.派生类中继承的基类成员的访问权限到派生类中保持不变 B.派生类的成员除了它自己的成员外,还包含了它的基类成员 C.派生类至少有一个基类 D.派生类是基类定义的延续

26.关于虚函数,下列说法正确的是( B)。

2

A.包含虚函数的类不能够生成实例 B.包含虚函数的类称为抽象类

C.虚函数在基类中说明后,不用再在派生类中重新说明 D.每个派生类必须对从基类继承的虚函数进行重新定义 27.友元的作用是( D )。 A.增加成员函数的种类 B.加强类的封装性 C.实现数据的隐蔽性 D.提高程序的运行效率

28.关于函数重载,下列说法不正确的是( C )。 A.构造函数重载将会给对象的初始化带来多种方式 B.不要使用重载函数来描述毫不相干的函数 C.重载函数中不允许使用默认参数

D.重载函数在编译时是根据参数表来进行选择的 29.关于动态联编,下列说法不正确的是( B )。 A.动态联编是以虚函数为基础的

B.动态联编实在编译时确定所调用的函数代码 C.动态联编实在运行时确定所调用的函数代码

D.动态联编调用函数的操作是通过指向对象的指针或对象的引用完成的 30.下列输出字符‘&’的方法中,不正确的是( C )。 A.cout<<’&’ B.cout<

以下为历年试卷整合(部分题目前面已包含)

31.在Windows环境下,为了方便绘图,系统定义了几种坐标映射模式,其中y轴正向垂直向下的映射模式是( B )。

A.MM_LOMETRIC B.MM_TEXT C.MM_HIENGLISH D.MM_TWIPS

32.现创建一个黑色的虚线画笔对象pen,语句为:pen. CreatePen(nPenStyle, 1, RGB(0,0,0) ),则参数nPenStyle的取值为( C )。

A.PS_SOLID B.PS_NULL C.PS_DASH D.PS_DOT 33.窗口CWnd类的( A)函数可以取得窗口客户区尺寸,用于绘图时精确定位。 A.GetClientRect B.GetWindowRect C.GetWindowText D.InvalidateRect 34.下面描述中,表达错误的是(B )

A.公有继承时基类中的public成员在派生类中仍是public的 B.公有继承是基类中的private成员在派生类中仍是private的 C.公有继承时基类中的protected成员在派生类中仍是protected的 D.私有继承时基类中的public成员在派生类中是private的 35.以下是关于鼠标的消息类型,表示按下鼠标左键的是( B )。 A.WM_MBUTTONDOWN B.WM_LBUTTONDOWN C.WM_LBUTTONBLCLK

3

D.WM_MBUTTONBLCLK 二、填空题

1. 使用 VC++ 的 AppWizard 创建的典型 SDI 应用程序的 4 个 MFC 基类是 ____________、

____________ 、____________ 和 ____________。 1、CWinApp,CFrameWnd,CDocument,CView

2. CObject 类及其派生类具有的 3 大特性是:____________ 、 ____________和____________ 。 2、持续性,动态性,诊断性

使用MFC AppWizard产生的应用程序的类型主要包括________ 、________ 和________。 3、单文档应用程序,多文档应用程序、基于对话框的应用程序 库模块分为 ________和 ________两类。4、静态链接库、动态链接库

面向对象的三大特性是 _______ 、 _______和 _______。5、封装性、继承性、多态性

在进行绘图时,___________用于指定图形的填充样式, _________用于指定图形的边框样式。6、画刷、画笔

利用应用程序向导(AppWizard)工具可以建立以下3种类型的应用程序:单文档、多文档、_________________。7、Dialog based(基于对话框)

文档序列化主要分为两个部分,它们是__________和___________。8、读文件、写文件 含有纯虚函数的类称为__________。9、虚基类

10.消息和_________是Windows程序设计的核心概念。10、事件 以下为陈志泊课本第二章的全部填空题

11.类的访问权限有__________、__________和__________3种。11、私有 保护 公有 12.类实现了面向对象程序设计的__________特性。12、封装

13.一个__________和__________的关系,正如基本数据类型与该类型的变量一样,如int x;。13、类 对象

14.当在类的外部定义成员函数时,必须在函数名前加上__________和__________。14、类名 作用域运算符(::)

15.__________是在对象被创建时自动执行,对象消失时自动执行的成员函数____________。15、构造函数 析构函数

16.类有两种用法,一种是类的实例化,即生成类的对象;另一种是通过__________,派生出新的类。16、继承

17.C++提供的__________机制允许一个派生类继承多个基类,即使这些基类是相互无关的。17、多继承 18.面向对象程序设计的3大机制为__________、__________、________。(与第5题重复)

19.在编译时就解决函数调用称为__________联编;在运行时才解决的函数调用称为__________联编。19、静态 动态

20.如果一个类中有一个或多个纯虚函数,则这个类称为__________。20、抽象基类 21.类的静态成员分为__________和__________。21、静态数据成员 静态成员函数 22.友元可以使__________,也可以是__________。22、函数 其他的类

23.类中可以有许多相同名称但参数类型或个数不同的成员函数,称为__________。23、重载

24.设a和b是两个整型变量,我们用a+b的形式求这两个变量的和;设c和d为浮点型变量,我们用c+d的形式求这两个变量的和。显然运算符“+”具有不同的用途,这是__________的例子。24、运算符重载

25. 模版可分为__________和__________。25、类模板 函数模板 历届试卷填空题

26. 对话框主要由 和 组成,对话框可分成 和 26、对话框资源 对话框类 模态 非模态

4

两种类型。

27.标准控件为 、 、 、 、 和 ______ 6种。27、静态控件 编辑框 按钮 列表框 组合框 滚动条

28.按钮控件分为 、 和 三种。28、普通按钮 单选按钮 复选框按钮

29.派生新类的过程一般包括吸收基类成员、 和 三个步骤。29、调整已有类成员、添加新的成员

30.程序联编的方式有两种,分别是 和 。 30、动态联编、静态联编

三、判断题(陈志泊第二章的判断题)

1. 当使用指针变量访问类的成员时,必须先使指针变量指向该类的某个对象。 ( √ ) 2. 构造函数和析构函数是类的两个特殊的成员函数。 ( √) 3. 在继承关系中,被继承的类称为基类,而通过继承关系定义出来的新类则被称为派生类。 (√) 4. 在程序中可以把一个基类对象当做派生类的对象来处理。 (×) 5. 类的静态成员是所有对象公有的,并不依赖于某个对象。 (√) 6. 友元函数是类的成员函数。 ( × ) 7. 函数重载是指一个函数可以和同一作用域中的其他函数具有相同的名字。 ( √ ) 8.运算符重载是一种特殊的函数重载。 (√ ) 9. 函数模板只是说明,不能直接执行,需要实例化为模板函数后才能执行。 (√ ) 10.C++中把数据之间的传输操作称为流。 (√ ) 四、简答题

1.一个Windows下的应用程序具有哪些特点?(陈志泊第三章问答题、历届试卷) 1、课本P51

(1)标准的图形界面

(2)应用程序与硬件无关的特性

(3)所有的Windows应用程序都是消息驱动机制的

2.什么是消息映射?消息映射与消息处理函数间的关系是什么?(陈志泊第三章问答题、历届试卷) 2、课本P67

消息映射就是将消息或命令发送到程序员为处理消息所编写的函数中,使其对消息进行处理。 消息处理函数指的是与某个消息对应的函数。消息处理函数的执行时由其对应的消息引发的,某个类对象中的消 息处理函数是与这个类对象能够得到的一个消息对应的,当这个消息发生时,这个函数就会被执行。

3.Windows 程序的入口点是什么函数?它主要完成什么功能?

3、Windows程序的入口点函数是WinMain,完成的主要功能是创建、注册和显示窗口,启动消息循环完成消息驱动。

4. 什么是文档?什么是视图?(陈志泊第四章问答题、历届试卷) 4、课本P78

文档:能够交流的,便于理解的结构化、规范化的信息。(或:描述软件开发过程和使用方法的信息) 视图:一个视图是一个没有边框的窗口,它在文档和用户之间起中介作用,只负责实现和修改文档数据,不负责存储。

5.简述文档类与视图类的相互关系。 5、课本P78

5

每一个文档可以有多个视图,但每个视图只能对应一个确定的文档。 6.文档类在文档视图结构中主要完成哪些任务? 6、课本P78

文档的任务是对数据进行管理和维护,在VC++中,文档类通过一个成为串行化(Serialize)的过程将数据保存到磁盘文件或数据库中,另外,它还可以处理命令消息。

7. 什么是设备坐标系?什么是逻辑坐标系?设备坐标系中有哪几种坐标系?(陈志泊第六章问答题)7、课本P215

设备坐标系是面向打印机或显示器等物理设备的坐标,以像素点或设备所能表示的最小长度单位为单位:X轴的 正方向为从左到右,Y轴的正方向为从上到下。

逻辑坐标系是面向设备环境的坐标系,这种坐标不考虑具体的设备类型,而在实际绘图时,Windows会根据当前 设置的映射模式,将逻辑坐标转换为设备坐标。 设备坐标系中有:屏幕坐标系、窗口坐标系和客户区坐标系三种。

8. 简述弹出式菜单的实现过程。(陈志泊第四章问答题、历届试卷)8、课本P93 (1)利用成员函数CMenu::CreatePopupMenu创建一个弹出式菜单

(2)利用成员函数CMenu::LoadMenu装入菜单资源或利用成员函数CMenu::AppendMenu添加菜单项 (3)利用成员函数CMenu::TrackPopMenu在指定位置显示弹出式菜单

9.什么是消息?Windows的消息有哪几种?各有什么特点?(陈志泊第四章问答题、历届试卷)9、课本P51 P62

消息是用于描述某个事件发生的信息。

标准的Windows消息有键盘消息、鼠标消息和窗口消息3种。

键盘消息的特点是当用户对键盘进行操作时,会产生对应消息,并把这个消息发送给对应的窗口。 鼠标消息的特点是当用户对鼠标进行操作时,产生对应消息,系统把这个消息发送给对应的窗口。 窗口消息包含所有窗口变化的信息。 10.简述模态对话框与非模态对话框的区别。 10、课本P123

模态对话框是指对话框被弹出后,用户必须在对话框中做出相应的操作。在退出对话框之前,它会阻止其他应用 程序的运行(包括它所在的应用程序)。

非模态对话框是指当对话框被弹出后,它将一直保留在屏幕上,但不影响其他应用程序的运行,用户可以继续在 对话框所在的应用程序中进行其他操作。

11.GDI实现的功能是什么? 11、课本P213

GDI作为Windows的重要组成部分,负责管理用户绘图操作时功能的转换。用户通过调用GDI函数与设备打交道, GDI通过不同设备提供的驱动程序将绘图语句转换为对应的绘图指令,避免了用户直接对硬件进行操作。

12.刷新视图时默认的函数调用过程是什么?(陈志泊第四章问答题、历届试卷) 12

CDocument::UpdateAllView->CView::OnUpdate->CWnd::Invalidate->CWnd::OnPaint->CView::OnDraw 五、程序设计题 第一大题:

要求设计一个用于维护联系人的 SDI 应用程序 Addrbook ,完成这些功能:从文件读取所有联系人、显示所有联系人、将所有的联系人保存到文件。

程序中用到的类定义如下, 在不修改类定义的前提下完成实现程序功能所需的类成员函数。(注:未用到

6

的类定义已省略,注意黑体字的提示) //contact.h ,联系人类定义文件 class CContact : public CObject { public: CContact ();

CContact ( CString name,CString tel,CString email ) public:

CString m_strName; CString m_strTel; CString m_strEmail; };

//contact.cpp ,联系人类实现文件

CContact:: CContact ( CString name,CString tel,CString email ){

m_strName=name; m_strTel=tel; m_strEmail=email }

//AddrbookDoc.h ,文档类定义文件 class CContact;

class CAddrbookDoc : public CDocument {

protected: // create from serialization only

7

CAddrbookDoc();

DECLARE_DYNCREATE(CAddrbookDoc) // Attributes public:

// 存放联系人的链表

CTypedPtrList m_ContactList; //{{AFX_VIRTUAL(CAddrbookDoc) public:

virtual BOOL OnNewDocument();

virtual void Serialize(CArchive& ar); virtual void DeleteContents(); //}}AFX_VIRTUAL // Implementation public:

virtual ~CAddrbookDoc(); #ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const; #endif protected:

// Generated message map functions protected:

//{{AFX_MSG(CAddrbookDoc) //}}AFX_MSG

8

DECLARE_MESSAGE_MAP() };

1. 完成此函数,此函数在加载新的联系人文件或退出程序时清空联系人链表 //AddrbookDoc.cpp ,文档类实现文件 void CAddrbookDoc::DeleteContents() {

CDocument::DeleteContents(); }

2. . 完成此函数,此函数完成从文件读取所有的联系人存放在链表中,以及将链表中所有联系人保存到文件的功能

void CAddrbookDoc::Serialize(CArchive& ar) {

if (ar.IsStoring()) { } else { } }

//AddrbookView.cpp, 视图类实现文件

3 .完成此函数,在此函数中显示所有练习人的信息,格式如下 姓名 电话 电子邮件 xxxx xxxx xxxxxxxxxx ? ? ?

void CAddrbookView::OnDraw(CDC* pDC)

9

{

CAddrBookDoc *pDoc=GetDocument(); ASSERT_VALID(pDoc); }

1. void CAddrbookDoc::DeleteContents() {

POSITION pos=m_ContactList.GetHeadPosition(); while(pos!=NULL){ CContact *pContact;

pContact=(CContact *)m_ContactList.GetNext(pos); delete pContact; }

ContactList.RemoveAll(); CDocument::DeleteContents(); }

2. void CAddrbookDoc::Serialize(CArchive& ar) {

if (ar.IsStoring()) {

POSITION pos=m_ContactList.GetHeadPosition(); while(pos!=NULL){ CContact *pContact;

pContact=(CContact *)m_ContactList.GetNextPosition(pos); ar<m_strName; ar<m_strTel; ar<m_strEMail; } } else {

while(TRUE){ try{

CString name,tel,email; ar>>name>>tel>>email;

CContact *pContact=new CContact(name,tel,email); m_ContactList.AddTail(pContact); }

catch(CArchiveException *e){ break; } } } }

10

3. void CAddrbookView::OnDraw(CDC* pDC) {

CAddrBookDoc *pDoc=GetDocument(); ASSERT_VALID(pDoc); pDC->TextOut(20,10,\姓名\pDC->TextOut(100,10,\电话\pDC->TextOut(200,10,\电子邮件\pDC->MoveTo(20,25); pDC->LineTo(300,25);

POSITION pos=pDoc->m_ContactList.GetHeadPosition(); y=30;

while(pos!=NULL){ CContact *pContact; pContact=

(CContact *)pDoc->m_ContactList.GetNextPosition(pos); pDC->TextOut(20,y,pContact->m_strName); pDC->TextOut(100,y,pContact->m_strTel); pDC->TextOut(200,y0,pContact->m_strEMail); y+=20; } } }

第二大题:

1 设动态链接库 math.dll 中导出了函数 int GetMax(int a,int b);

完成下面的程序实现从动态链接中显式调用该函数( 注意注释 )。// 声明函数指针 void main() {

// 加载动态链接库 // 获得函数指针 // 调用函数 // 释放动态链接库 }

11

2 .设对话框类 CStudentDialog 中包含 3 个数据成员 class CStudentDialog : public CDialog { public:

String m_strName; int m_nAge; double m_fScore; }

写一段程序,创建并调用该模式对话框,并在用户点击“确认”按钮后用消息框显示上述 3 个数据成员的值

void ShowDialog() {

// 在此函数中完成上述功能 }

3 .文档视图结构的 SDI 应用程序的文档类为 CStudentDoc (基类为 CDocument ),视图类为 CStudentView (基类为 CView ), CStudentDoc 类定义如下 class CStudentDoc : public CDocumet { public:

String m_strName; int m_nAge; double m_fScore; // 其余部分省略 //? }

12

A .实现 Serialize 函数完成上述 3 个数据的保存和读取 void CStudentDoc::Serialize ( CArchive& ar ) { }

B .视图类 CStudentView 中以下面的格式显示 CStudentDoc 中的 3 个数据成员,完成 CStudentView::OnDraw 函数实现此功能 姓名 年龄 成绩 xxxx xxxx xxxxxxxxxx

void CStudentView::OnDraw(CDC *pDC) { } 第二大题: 1.

typedef int (*GET_MAX)(int,int); GET_MAX GetMax;

int main(int argc, char* argv[]) {

HINSTANCE hDll=LoadLibrary(\if(hDll==NULL){

printf(\return 0; }

GetMax=( GET_MAX) GetProcAddress(hDll,\if(GetMax!=NULL) {

int max=GetMax(5,3); printf(\}

FreeLibrary(hDll); } 2.

void ShowDiaolog() {

CStudentDialog dlgStudent; if(dlgStudent.DoModal()==IDOK) {

CString strMsg;

13

strMsg.Format(\

dlgStudent.m_strName,dlgStudent.m_nAge,dlgStudent.m_fScore); AfxMessageBox(strMsg); } } 3.

void CStudentDoc::Serialize(CArchive& ar) {

if(ar.IsStoring()) {

ar<

ar>>m_strName>>m_nAge>>m_fScore; } }

void CStudentView::(CDC *pDC) {

CStudentDoc *pDoc=GetDocument(); pDC->TextOut(5,5,\姓名 年龄 成绩\pDC->MoveTo(0,25); pDC->LineTo(200,25); CString strLine;

strLine. Format(\pDoc->m_strName,pDoc->m_nAge,pDoc->m_fScore); pDC->TextOut(5,30,strLine); }

第三大题:

定义并实现类Date(日期类)

说明:Date类至少提供两个构造方法,和一个实例方法,即: 1). Date(int year, int month, int day) 用年、月、日三个整数来初始化Date类对象 2). Date(CString dateString)

用一个表示年月日的字符串(“2005-09-22”)来初始化一个Date类对象 3). bool equal(Date& other)

比较两个日期是否相同,相同返回true,不同返回false。

2.文档视图结构的SDI应用程序的文档类为CStudentDoc(基类为CDocument),视图类为CStudentView(基类为CView),CStudentDoc类定义如下 class CStudentDoc : public CDocumet {

public:

String m_strName; int m_nAge;

14

bool m_nGender double m_fScore; //其余部分省略 //? }

实现Serialize函数完成上述4个数据的保存和读取 void CStudentDoc::Serialize(CArchive& ar) { }

3.以下为某试图类的OnDraw函数,该函数完成的功能是在视图中输出一个宽度为100象素、高度为60象素的蓝色实心矩形,矩形左上角坐标为(50,50),并在矩形中央用白色文字输出字符串“VC++程序设计”,补充实现此功能的代码 CDrawView::OnDraw(CDC *pDC) { }

第三大题: 1. class Date{ private: int year; int month; int day;

public Date(int year,int month,int day){ this->year=year; this->month=month; this->day=day; }

public Date(CString dateString){ this->year=atoi(dateString.Left(4)); this->month=atoi(dateString.Mid(5,2)); this->day=atoi(dateString.Right(2)); }

public bool equal(Date& other){ return this->year==other.year &&this->month==other.month; &&this->day==other.day; } }

15

2.

void CStudentDoc::Serialize(CArchive& ar) {

if(ar.IsStoring()){

ar<

ar>>m_strName>>m_nAge>>m_nGende>>m_fScore; } } 3.

CDrawView::OnDraw(CDC *pDC){ CBrush br;

CBrush *old_brush;

br.CreateSolidBrush(RGB(0,0,255));

old_brush=(CBrush *)pDC->SelectObject(&br); pDC->Rectangle(50,50,150,110); pDC->SelectObject(old_brush); pDC->SetTextColor(RGB(255,255,255)); pDC->TextOut(100,80,\程序设计\}

一、 填空题

1 类的访问权限有__________、__________和__________3种。 2 类实现了面向对象程序设计的__________特性。

3 一个__________和__________的关系,正如基本数据类型与该类型的变量一样,如int x;。 4 当在类的外部定义成员函数时,必须在函数名前加上__________和__________。

5 __________是在对象被创建时自动执行,对象消失时自动执行的成员函数称为__________。 6 类有两种用法,一种是类的实例化,即生成类的对象;另一种是通过__________,派生出新的类。7 C++提供的__________机制允许一个派生类继承多个基类,即使这些基类是相互无关的。 8 面向对象程序设计的3大机制为__________、__________、__________。

9 在编译时就解决函数调用称为__________联编;在运行时才解决的函数调用称为__________联编。

16

10 如果一个类中有一个或多个纯虚函数,则这个类称为__________。 11 类的静态成员分为__________和__________。 12 友元可以使__________,也可以是__________。

13 类中可以有许多相同名称但参数类型或个数不同的成员函数,称为__________。

14 设a和b是两个整型变量,我们用a+b的形式求这两个变量的和;设c和d为浮点型变量,我们用c+d的形式求这两个变量的和。显然运算符“+”具有不同的用途,这是__________的例子。 15 模版可分为__________和__________。 二、判断题

1 当使用指针变量访问类的成员时,必须先使指针变量指向该类的某个对象。 ( ) 2 构造函数和析构函数是类的两个特殊的成员函数。 ( ) 3 在继承关系中,被继承的类称为基类,而通过继承关系定义出来的新类则被称为派生类。 ( ) 4 在程序中可以把一个基类对象当做派生类的对象来处理。 ( ) 5 类的静态成员是所有对象公有的,并不依赖于某个对象。 ( )6 友元函数是类的成员函数。 ( ) 7 函数重载是指一个函数可以和同一作用域中的其他函数具有相同的名字。 ( ) 8 运算符重载是一种特殊的函数重载。 ( )9 函数模板只是说明,不能直接执行,需要实例化为模板函数后才能执行。 ( ) 10 C++中把数据之间的传输操作称为流。 ( ) 三、选择题

1 关于类,下面说法不正确的是( )。 A 在类中,成员的默认访问特性是私有的 B 类实现了数据的封装 C 类实质上是一种数据类型

D 在类的定义中,必须包含private、public、protect三种访问方式对应的部分 2 关于对象,下面说法不正确的是( )。 A 对象是类的一个实例 B 任何一个对象只是属于一个类 C 一个类只能有一个对象

D 类与对象间的关系和数据类型与变量间的关系类似 3 关于构造函数,下列说法不正确的是( )。 A 一个类中有且仅有一个构造函数 B 构造函数在说明类变量时被自动执行 C 构造函数没有返回值类型

D 类中的构造函数的函数名与该类的类名必须同名 4 关于析构函数,下列说法不正确的是( )。 A 类中有且仅有一个析构函数 B 析构函数可以有形参 C 析构函数没有返回值类型 D 析构函数在对象消失时被自动执行

5 关于类的继承,下列说法不正确的是( )。 A 派生类中继承的基类成员的访问权限到派生类中保持不变 B 派生类的成员除了它自己的成员外,还包含了它的基类成员 C 派生类至少有一个基类 D 派生类是基类定义的延续

6 关于虚函数,下列说法正确的是( )。

17

A 包含虚函数的类不能够生成实例 B 包含虚函数的类称为抽象类

C 虚函数在基类中说明后,不用再在派生类中重新说明 D 每个派生类必须对从基类继承的虚函数进行重新定义 7 友元的作用是( )。 A 增加成员函数的种类 B 加强类的封装性 C 实现数据的隐蔽性 D 提高程序的运行效率

8 关于函数重载,下列说法不正确的是( )。 A 构造函数重载将会给对象的初始化带来多种方式 B 不要使用重载函数来描述毫不相干的函数 C 重载函数中不允许使用默认参数

D 重载函数在编译时是根据参数表来进行选择的 9 关于动态联编,下列说法不正确的是( )。 A 动态联编是以虚函数为基础的

B 动态联编实在编译时确定所调用的函数代码 C 动态联编实在运行时确定所调用的函数代码

D 动态联编调用函数的操作是通过指向对象的指针或对象的引用完成的10 下列输出字符‘&’的方法中,不正确的是( )。 A cout<<’&’ B cout<

1 私有 保护 公有 2 封装 3 类 对象

4 类名 作用域运算符(::) 5 构造函数 析构函数 6 继承 7 多继承

8 封装 继承 多态 9 静态 动态 10 抽象基类

11 静态数据成员 静态成员函数 12 函数 其他的类 13 重载 14 运算符重载 15 类模板 函数模板 二

√√√×√×√√√√ 三 DCABABDCBC

18

本文来源:https://www.bwwdw.com/article/q1rd.html

Top