Visual C++程序设计教程(第二版)课件:程序开发基础_第1页
Visual C++程序设计教程(第二版)课件:程序开发基础_第2页
Visual C++程序设计教程(第二版)课件:程序开发基础_第3页
Visual C++程序设计教程(第二版)课件:程序开发基础_第4页
Visual C++程序设计教程(第二版)课件:程序开发基础_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序开发基础

2.1C++语法基础

在这一节中,将介绍C++的特点和基本功能。主要包括:

C++中的语法、类、对象、类的继承和多态性以及C++中的输入/输出流。2024/11/11VisualC++程序设计教程22.1.1C++程序的构成一个标准的C++程序由三个部分构成:预处理命令

预处理命令位于行首,以符号#开始,C++提供的预处理命令有宏定义命令、文件包含命令和条件编译命令三种。

函数

函数是根据进去的信息(输入)和产生的东西(输出结果)所定义的一个黑盒。C++程序由若干个函数构成,有且只有一个主函数main()。函数分为库函数和自定义函数两大类。2024/11/11VisualC++程序设计教程3C++程序的构成(续)程序语句 程序语句是程序的基本组成部分,一个语句是给计算机的一条完整的指令。在

C++里,一个语句是在结尾处用分号结束的。C++提供了说明语句、赋值语句、程序控制语句、复合语句及空语句等。2024/11/11VisualC++程序设计教程42.1.2C++的语言基础

C++的词法规则:关键字

标识符

语言符号

注释符

C++的数据类型:基本类型:包括整型(int)、浮点型(float)、字符型(char)和逻辑型(bool)2024/11/11VisualC++程序设计教程5C++的数据类型(续)

空类型:void类型

构造类型:常见的构造类型有数组、结构体、联合体和枚举。

指针类型:指针类型变量用于存储另一变量的地址,而不能用来存放基本类型的数据。它在内存中占据一个存储单元。

类类型:类是体现面向对象程序设计的最基本特征,也是体现C++与C最大的不同之处。类也是一个数据类型,它定义的是一种对象类型,由数据和方法组成,描述了属于该类型的所有对象的性质。

2024/11/11VisualC++程序设计教程62.1.3C++中的类与对象

对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。静态特征是可以用某种数据来描述的特征。动态特征即对象所表现的行为或对象所具有的功能。类是面向对象语言必须提供的用户定义的数据类型,它将具有相同状态、操作和访问机制,多个对象抽象成为一个对象类。

2024/11/11VisualC++程序设计教程7C++中的类与对象(续1)类的一般定义格式如下:

class

<类名>{private:

<私有数据成员和成员函数>;protected:

<保护数据成员和成员函数>;public:

<公有数据成员和成员函数>;}

<各个成员函数的实现>;

2024/11/11VisualC++程序设计教程8C++中的类与对象(续2)

定义类的函数成员的格式如下:

返回类型

类名::成员函数名(参数列表){函数体}对象的定义格式如下:

<类名><对象名表>;

2024/11/11VisualC++程序设计教程9C++中的类与对象(续3)对象的成员(一个对象的成员是该对象的类所定义的成员)表示如下:<对象名>.<成员名>

或者:<对象名>-><成员名>2024/11/11VisualC++程序设计教程102.1.4类的继承和多态性

继承是面向对象设计的基本特征之一,是从已有的类基础上建立新类。通过C++语言中的继承机制,一个新类既可以共享另一个类的操作和数据,也可以在新类中定义已有类中没有的成员。C++的另一个重要的特征是支持多态。所谓多态性是指当不同的对象收到相同的消息时,产生不同的动作。2024/11/11VisualC++程序设计教程11继承如在定义类B时,如果继承类A,就会自动得到类A的操作和数据属性,使得程序员需定义类A中所没有的新成分即可完成在类B的定义,这样称类B继承了类A,类A派生了类B。这种机制称为继承。称类A为基类或父类,类B为派生类或子类。继承的定义格式如下:

class<派生类名>:<继承方式><基类名>2024/11/11VisualC++程序设计教程12继承(续)<继承方式>有三种关键字给予表示:l

public:公有继承,其特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。lprotected:保护继承,其特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。

l

private:私有继承,其特点是基类的公有成员和保护成员作为派生类的私有成员,并且不能被这个派生类的子类访问。

2024/11/11VisualC++程序设计教程13继承实例//基类classCBase{public:

voidFuncA(void);

voidFuncB(void);};//派生类classCDerive:publicCBase{public:

voidFuncC(void);

voidFuncD(void);};//实例主程序main(){CDeriveb;

//CDerive的一个对象

b.FuncA();//CDerive从CBase继承了函数FuncAb.FuncB();//CDerive从CBase继承了函数FuncBb.FuncC();

b.FuncD();}2024/11/11VisualC++程序设计教程14多态 C++的多态性具体体现在运行和编译两个方面:在程序运行时的多态性通过继承和虚函数来体现。在程序编译时多态性体现在函数和运算符的重载上。

2024/11/11VisualC++程序设计教程15多态实例classCBase{public:

virtualvoidFuncA(void){cout<<”ThisisCBase::FuncA\n”}//用关键字virtual声明一个虚函数};voidTest(CBase*a){a->FuncA();}classCDeriveA:publicCBase{public:

virtualvoidFuncA(void){cout<<”ThisisCDeriveA::FuncA\n”}};classCDeriveB:publicCBase{public:

virtualvoidFuncA(void){cout<<”ThisisCDeriveB::FuncA\n”}};2024/11/11VisualC++程序设计教程16多态实例(续)//主程序main(){CBaseb;//CBase的一个对象

CDeriveAobjectA;//CDeriveA的一个对象

CDeriveBobjectB;//CDeriveB的一个对象

Test(&b);

Test(&objectA);

Test(&objectB);}//输出结果ThisisCBase::FuncAThisisCDeriveA::FuncAThisisCDeriveB::FuncA2024/11/11VisualC++程序设计教程172.1.5C++中的输入/输出流

例:cout<<”Enteryourname:”;cin>>name;cout<<”Yournameis:”<<name<<’\n’; 第一条语句用到了标准输出流cout和运算符<<,<<称为流插入运算符。第二条语句用到了标准输入cin和运算符>>,>>称为流提取运算符。与C中的printf和scanf不同的是,流插入运算符和流提取运算符不需要指示输出/输入数据类型的格式,控制串、转换说明符和运算符能自动识别要用的类型。

2024/11/11VisualC++程序设计教程18C++中的输入/输出流(续)

用C++风格的面向流的输入/输出可以使得程序具有更好的可读性,并且能减少出错的可能。注意:C++程序必须包含头文件iostream.h后才能使用输入/输出流,这一文件包含了所有输入/输出流操作所需的基本信息。

2024/11/11VisualC++程序设计教程192.2AppWizard的使用

AppWizard是一个基于用户的选择创建MFC项目的一个工具。AppWizard创建作为一个框架项目所需要的所有源文件,这个框架项目是应用程序的起始点。可以用AppWizard创建单文档、多文档或者基于对话框的应用程序。

2024/11/11VisualC++程序设计教程20AppWizard第一步

AppWizard第一步:指定应用程序风格AppWizard对于需要创建应用程序的类型提供了三种选项:

SingleDocumentInterface(SDI,单文档界面)MultipleDocumentInterface(MDI,多文档界面)Dialogbased(基于对话框)

2024/11/11VisualC++程序设计教程21AppWizard第一步(续)

在AppWizard第一步的对话框中还可指定一个特殊的选项:

Document/ViewArchitectureSupport复选框

大多数情况下,可以让它保持为缺省(选中)状态。如果选中,表示应用程序采用文档-视图结构。这种结构将文档数据的存取和显示分离了出来。采用文档-视图结构可以更清晰、方便地实现多种功能。

2024/11/11VisualC++程序设计教程22AppWizard第二步

AppWizard第二步:指定数据库支持选项

如果没有写数据库的应用程序,选择None;如果不想从CFormView派生视类,也不想有Record菜单,选择Headerfilesonly,即只用到ODBC必需的一些头文件;如果想从CFormView派生视类,并且有Record菜单,但不必序列化(Serialize)一个文档,选择Databaseviewwithoutfilesupport,这样程序就可以通过CRecordset来修改数据库的元组(记录);如果想要求数据库的支持,同时要序列化文档,选择Databaseviewwithfilesupport。2024/11/11VisualC++程序设计教程23AppWizard第三步

AppWizard第三步:设置COM选项

如果不想编写ActiveX(或先前的OLE,ActiveX和OLE技术被统称为复合文档技术)应用程序,选择None;如果要求应用程序能嵌入或连接的ActiveX对象,如Word文档或Excel中的工作表,选择Container;如果希望应用程序能为其它应用程序提供文档服务,且应用程序不必作为一单独的应用程序,选择Mini-server;2024/11/11VisualC++程序设计教程24AppWizard第三步(续)如果希望应用程序作为一个可以独立的运行程序,选择Full-server;如果希望应用程序既能包含其它应用程序中的对象,又能为其它应用程序提供对象,则选择Bothcontainerandserver2024/11/11VisualC++程序设计教程25AppWizard第四步AppWizard第四步:决定窗口的样式DockingToolbar(预设工具条)

Initialstatusbar(初始状态栏)

Printingandprintpreview(打印和打印预览)

3DControls(三维控件)

Context-sensitiveHelp(上下文相关帮助)

MAPI(消息API)

WindowsSockets(Windows套接字)

2024/11/11VisualC++程序设计教程26

AppWizard第五步:窗口风格、注释和类型

如果希望工程具有MFC标准风格,则应用选择MFCStandard;

如果希望工程具有浏览风格,即拥有切分窗口,左边窗口显示树形视图,右边窗口显示列表视图,则选择WindowsExplorer; 如果希望在源代码中产生注释,则选择Yes,please,反之,选择No,thankyou。

AppWizard第五步

2024/11/11VisualC++程序设计教程27AppWizard第六步

AppWizard第六步:改变视图的基类

可以修改缺省类名、基类、头文件或实现文件名。 选择不同的应用程序视图基类,应用程序工作的方式也会相应地改变。 单击Finish按钮,就完成了AppWizard提供的所有选项。

2024/11/11VisualC++程序设计教程282.3一个简单的应用程序

创建过程:在VisualC++6.0的启动界面中,选择“File|New”,在弹出的“New”对话框中单击“Projects”选项卡。选择“MFCAppWizard(exe)”,在“Location”编辑框中输入要建立的工程所在的目录。在右上方的“Projectname”编辑框中输入工程名称Eg2_1,单击OK按钮,弹出MFCAppWizard向导对话框。在第一步中选择Singledocument,建立一个单文档界面应用程序SDI。取其默认值,直到第六步结束。

2024/11/11VisualC++程序设计教程292.3.2编译、链接并运行程序

选择Build|BuildEg2_1.exe菜单项或者按F7键进行编译、链接。

选择Build|ExecuteEg2_1.exe菜单项或者按Ctrl+F5键,可以看到运行结果。2024/11/11VisualC++程序设计教程302.4程序结构剖析

MFCAppWizard一共生成了五个类:CAboutDlgCEg2_1AppCEg2_1DocCEg2_1ViewCMainFrame2024/11/11VisualC++程序设计教程31分析五个类CAboutDlg类的基类是CDialog。可以通过双击ClassView中CAboutDlg来查看,这时右边的文本编辑器中出现CDboutDlg的类定义。它在程序中的表现就是选择主菜单中“帮助”下的“关于Eg2_1..”后出现的对话框。

CEg2_1App类代表整个应用程序,它由CWinApp派生。

2024/11/11VisualC++程序设计教程32分析五个类(续)

在MFC中,一个应用程序的真正的入口点是AfxWinMain(),但它并不在工程中的任何一个文件中存在,仅在程序编译链接时加入工程中,在AfxWinMain()中调用了MFC应用程序的InitInstance()函数进行初始化,然后进入MFC的消息循环,这样程序就开始运行起来。所以可以认为InitInstance()是程序员能够修改的最先被执行的函数。

2024/11/11VisualC++程序设计教程33分析五个类(续)CEg2_1Doc和CEg2_1View类两个类组成了MFC著名的Doc/View体系结构。文档负责存储处理各种数据,并负责文档内容的系列化,视图负责显示文档内容。SDI应用程序的Doc/View模型比较简单,应用程序可以拥有多个文档模板,但每次只能有一个活动模板,只有一个视图。

2024/11/11VisualC++程序设计教程34分析五个类(续)CMainFrame类即主框架类。CMainFrame是从CFrameWnd中派生出来的。AppWizard在CMainFrame类中主要生成了两个函数,即:重载了基类的PreCreateWindow()函数建立了响应WM_CREATE的消息处理函数OnCreate()。 此外,CMainFrame类中还内嵌了工具栏类的对象m_wndToolBar和状态栏类的对象m_wndStatusBar。

2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论