欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Visual-C从入门到实践.ppt

    • 资源ID:5576408       资源大小:1.55MB        全文页数:463页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Visual-C从入门到实践.ppt

    第1章 Visual C+6.0集成开发环境概述,Visual C+6.0是微软推出的一个功能强大的可视化集成开发环境。它提供了软件代码自动生成和可视化的资源编辑功能。Visual C+6.0提供了功能强大的向导工具,包括MFC AppWizard、ClassWizard和MFC ActiveX ControlWizard等。Visual C+6.0同时提供了对数据库开发和Internet的强大支持。本章讲解的知识点包括:Visual C+概述;Visual C+6.0集成开发环境介绍;Visual C+6.0界面概览;Visual C+6.0开发步骤与环境设定。,1.1 Visual C+概述,Visual C+是一个功能强大的可视化软件开发工具。Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境。Visual C+大概可以分成三个主要的部分:C+编译环境、微软基础类库和SDK Platform。,1.1.1 Visual C+的语言基础C+语言,C+是美国贝尔实验室的Bjarne Stroustrup博士在C语言的基础上,弥补了C语言存在的一些缺陷。增加了面向对象的特征,而开发出来的一种面向对象和过程性的程序设计语言。Visual C+作为一款优秀的C/C+语言的编译工具。Microsoft公司于1993年推出Visual C+1.0,随后Visual C+版本不断升级。但其中以Visual C+6.0拥有较多的用户。虽然已经推出了更新的版本,但Visual C+6.0更有较大的市场。,1.1.2 Visual C+的接口函数Windows API,Windows API(Application Programming Interface,应用程序编程接口)是一套用来控制整个Windows系统的接口函数库。Windows拥有多达成百的API函数。在Windows中,无论是进行任何的操作,系统都会利用这些函数来进行一定的控制。例如单击鼠标时,系统就会从硬件得到消息,然后在软件上利用API函数进行鼠标单击消息的发送、接收,进而产生一定的动作。,1.1.3 Visual C+的类库MFC,Microsoft基础类库(Microsoft Foundation Class Library,MFC)的本质是一个包含了许多已经定义好了的类的类库。MFC是微软提供的,封装了大量Windows API的C+类库。它基本封装了Windows的所有API函数。因此,利用MFC建立应用程序更加符合面向对象的思想。同时利用向导所建立的应用程序隐藏了程序设计的很多细节,如消息的管理、设备环境绘图。,1.2 Visual C+6.0集成开发环境概述,Visual C+自诞生以来,一直是Windows下最主要的开发工具之一。利用Visual C+开发环境可以完成各种各样的应用程序的开发。从软件的底层到软件的界面设计,Visual C+都提供了强大的支持。而且,Visual C+强大的调试功能也为大型复杂软件的开发提供了有利的保障。近年来多媒体技术的快速发展,可视化程序设计越来越得到重视,而Visual C+6.0最为一款最优秀的可视化开发环境得到程序员的喜爱。友好的编程界面,强大的向导功能,微软公司的大力支持使Visual C+成为当今软件开发最优秀的工具之一。,1.2.1 Visual C+6.0的安装,Visual C+6.0作为Visual Stdio的主打产品。读者可购买整个Visual Stdio光盘进行Visual Stdio整个软件开发家族的安装。当然读者也可以在安装时自定义选择性安装。例如读者可以只选择安装Visual C+6.0。,1.2.2 开发环境窗口介绍,当成功安装了Visual C+6.0以后,会在桌面上自动生成一个应用程序图标。双击该图标后可以进入Visual C+6.0的主界面。此时由于没有任何工程是活动的,整个界面是灰色的。当进入Visual C+6.0并利用向导工具创建一个基于MFC AppWizardexe的名字为test的项目文件后,显示窗口如图1.9所示。,1.3 Visual C+6.0界面概览,Visual C+6.0是一款优秀的开发工具,本节详细介绍Visual C+6.0开发环境的的布局,以及开发环境的使用。,1.3.1 Visual C+6.0开发环境布局,双击桌面上的“Microsoft Visual C+6.0”图标,Visual C+6.0启动后,生成项目后的开发环境的具体布局如图1.10所示。,1.3.2 Visual C+6.0菜单介绍,进行程序设计之前,首先介绍各个菜单命令的基本功能。程序员大部分操作是通过菜单来进行的,同时Visual C+6.0提供了多个快捷菜单,在开发环境的各个工作区右击即可弹出相应的快捷菜单,在此不再介绍。下面对主窗口的菜单及其功能进行介绍。1File菜单2Edit菜单3View菜单4Insert菜单5Project菜单6Build菜单7Tools菜单,1.3.3 Visual C+6.0工具栏介绍,工具栏是一种图形化的操作界面,熟练掌握工具栏的使用可以提高编程效率。工具栏包括一些操作按钮,分别对应一些命令,可以单击按钮进行操作。Visual C+6.0包含有很多工具栏,可以通过“Tools”菜单进行定制,也可以在菜单栏或工具栏上右击,在弹出的快捷菜单中定制工具栏。常用的工具栏包括“Standard”和“Build MiniBar”,如图1.13所示。,1.3.4 Visual C+6.0控件面板介绍,项目工作区包括“Class View”、“Resourse View”和“FileView”三个面板。下面对三个面板进行具体介绍。1Class View面板2Resourse View面板3FileView面板,1.3.5 资源编辑器介绍,Visual C+6.0提供了资源编辑工具,用户可以方面的使用该工具创建资源如图标、光标、位图、菜单以供Windows程序使用。在Visual C+6.0中,资源编辑器为了引入资源,定义了一种与资源一一对应的符号。这样,资源可以方面的被使用。,1.3.6 输出窗口介绍,Visual C+6.0提供了一个输出窗口,它主要输出程序编译的结果,同时显示错误代码的行数,并给出错误提示。程序员可以在输出窗口中查看错误的提示,根据提示修改程序,大大加快了程序开发的效率。在程序的调试过程中,可以在输出窗口中观察变量的值变化,从而分析程序,如图1.18所示。,1.4 Visual C+6.0开发步骤与环境设定,Visual C+6.0作为一款优秀的开发工具,其编译链接的设定是比较重要的。如果设定不当,程序将无法运行。本节将介绍利用Visual C+6.0开发的步骤,以及编译环境的设定。,1.4.1 程序的开发步骤,编写任何程序都应该严格按照软件工程的程序设计规范进行,利用Visual C+6.0进行程序开发的基本步骤可以概括如下:(1)分析问题。编写任何一个程序,都应该首先从实际问题中抽象出来其数学模型,求解出解决方法,并用一定的工具进行描述。(2)编辑程序。编写源程序,利用Visual C+6.0的代码编辑工具编写代码。(3)编译程序。编译源程序,生成目标文件。(4)链接程序。将一个或多个目标文件与库函数进行连接后,产生可执行文件。(5)运行调试程序。程序的错误不仅仅是语法方面的,更重要的是逻辑错误,必须进行严格的测试后,程序才可以发布。,1.4.2 开发环境的设定,Visual C+6.0是功能强大的开发环境,编译连接的选项较多,如果不能正确设置,程序将不能编译或者出现其他错误。单击“Tools”|“Options”弹出“Options”对话框,如图1.19所示。在此对话框中可以对Visual C+6.0开发环境进行设定。1Directories设置2调整代码字体颜色和字体大小设置,1.5 程序设计入门实例hello word!,本小节给出一个利用Visual C+6.0开发应用程序的实例,了解基本的操作步骤,菜单和工具栏的使用。,1.6 上机实践,1创建一个简单的应用程序,了解菜单,工具栏的使用,熟悉Visual C+6.0集成开发环境。2下载speech sdk 5.1开发包,进行环境设置以包含所下载的开发包文件。,1.7 小结,本章介绍了Visual C+6.0集成开发环境的安装与卸载,重点讲解了Visual C+6.0的菜单的常用命令,同时介绍了Visual C+6.0的项目工作区和资源编辑器的使用。讲解了Visual C+6.0开发环境的设置。通过学习本章,读者应该了解Visual C+开发环境的特点,掌握Visual C+6.0环境的设置方法。掌握一般应用程序的开发步骤。,1.8 习题,1简单描述利用Visual C+6.0开发应用程序的步骤?2如何使用Visual C+6.0的资源编辑器创建资源文件?3如何为Visual C+6.0添加新的头文件搜索目录?,第2章 C+语言基础,C+语言是对传统C语言进行面向对象的扩充。它是在C语言的基础上增加了对面型对象程序设计的支持,其语法特点和C语言十分接近。使用C+语言可以在Visual C+开发环境中开发出功能强大的应用程序。本章讲解的知识点包括:数据类型;运算符;表达式;控制结构。,2.1 面向对象程序设计概述,对象是是面向对象程序设计技术的核心,那么到底什么是对象?世界上的一切事物都是对象都是客观对象。人大脑中的认识和概念也是对象。可见对象可以是有形的实体,也可以是无形的认识、知识、事件等。概括的说对象就是一个实体,它具有一个名字标志,并且具有自身的状态和功能。面向对象的编程方法具有四个基本特征:1抽象2继承3封装4多态性,2.2 数据类型,数据类型就是一类数据的集合。在计算机中,数据以某种特定的形式存储在计算机中,数据类型决定了数据在计算机中的存储形式。,2.2.1 常量与变量,常量是指在程序运行中,数值不能改变的量。例如13、28、a、2.3等,这些量在整个程序运行期间,其值不发生改变。在C+中,定义常量的语法如下所示。#define 标识符 常数其中,#表示这是一个宏定义命令;define为定义符号常量的关键字;标识符为常量的名称;常数为符号常量具体的数值。常量定义中关键字和标识符,以及标识符和常数之间必须留一个以上的空格。,2.2.2 简单类型,C+语言中的简单数据类型是指基本的数据类型,即整型、实型、字符型等。下面介绍其特点和用法。1整型2实型3字符型,2.2.3 字符串常量,字符常量是有单引号括起来的单个字符,C+语言同C语言一样,除了字符常量外,还支持字符串常量。字符串常量是由一对双引号括起来的字符序列。字符串常量和字符常量的区别是字符串常量在每一个字符串的最后一个字符的后面加上一个字符串结束标志,从而在程序访问时可以判断字符串的字符序列是否结束。,2.2.4 构造类型,C+语言中除了基本数据类型外,还提供了构造数据类型,即数组。数组是有序数据的组合,数组中的每一个元素都属于同一数据类型,这和C语言中的数组是完全一致的。数组包括一维数组和多维数组。数组的定义格式和引用方式与在C语言中是一致的。,2.2.5 文件类型,C+语言中提供了文件的数据类型,即C+把文件看做是字符序列,即文件是由一个一个字符数据顺序组成的,根据数据结构的组织形式,可以把文件分为文本文件和二进制文件。在C+中若要对文件进行输入输出,必须首先创建一个流,然后将流和文件相关联,即打开文件,此时才可以进行操作,然后关闭文件。由于文件的使用比较复杂,在后面的章节中将详细的介绍C+中文件的基本操作。,2.2.6 指针类型,C+语言中的指针和C语言中的指针是完全一样的。但是C+语言中提供了特殊的指针,即void型指针。它表示不确定的类型。void型指针是一种通用型指针,也就是说任何类型的指针都可以赋值给void型的指针变量。,2.3 数组,数组作为一种构造数据类型,它的使用和基本类型有很大不同。因此有必要对数组这一数据类型进行介绍。,2.3.1 一维数组,数组是有序数据的集合。在C+中一维数组的定义方式和C语言中一维数组的定义方式完全相同。并且使用方式,以及使用的注意事项都有C语言中基本一致。1一维数组的定义2数组的初始化3一维数组的使用,2.3.2 二维数组,在C+中二维数组与C语言中的二维数组的定义是一样的。一维数组是一行有序数据的结合,而二维数组则是一个有序数据的一个矩阵。1二维数组的定义2二维数组的初始化3二维数组的使用,2.3.3 字符型数组,前面已经介绍了在定义一维或者二维数组时,需要指定其类型说明符。类型说明符是基本数据类型,例如整型、浮点型、字符型等。但是字符数组与其他数组有时不同,下面对字符数组的特殊用法进行介绍。1字符数组的定义2字符串与字符数组3字符数组的输入输出,2.4 运算符,运算符就是表示变量之间进行数学运算或其他运算的符号。C+中的运算符基本沿用了C语言中的运算符,常见的运算符有以下几类:赋值运算符、算术运算符、逻辑运算符、关系运算符、位运算符、逗号运算符和条件运算符。本节对C+语言中常用的运算符进行介绍。,2.4.1 赋值运算符,赋值运算符就是赋值符号“=”,它的作用是将一个数据赋给一个变量。在赋值操作中最常见的操作就是不同类型间的赋值,例如把整型常量赋值给实型变量,这中操作是合法的,但是发过来却是非法的。在实际的应用过程中应该注意同型变量之间进行赋值。尽量减少不同类型的赋值操作。,2.4.2 算术运算符,基本的算术运算符包括“+”、“-”、“*”、“/”和“%”。程序设计中的算术运算不可能是同种类型之间的操作。因此就出现不同类型进行运算后的类型问题。C+语言规定,两个整数相除的结果为整数,如9/4的结果为2,舍去小数部分。在参加+、-、*、/的运算中,如果有一个数为实数,则结果为double型。,2.4.3 逻辑运算符,在程序设计中,使用较多,技巧性最强的运算就是逻辑运算。在循环语句和条件语句中,经常需要根据需要进行转移,其中最常用的就是逻辑运算符。“|”是选择性判断“或”,可以对条件中的或条件进行判断进行转移。“&”是“与”需要程序中的多个条件都满足条件才可以转移。“!”是非判断,即程序中某条件不满足什么情况时进行转移。,2.4.4 关系运算符,关系运算是和逻辑运算一样,在程序设计中经常用到。逻辑运算最常用的是判断某种具体值是否属于某类情况。例如计算1加到100的值,则需要从1加到100,期间需要判断变量是否大于100,从而设计程序。关系判断在程序设计中也是十分重要的运算。,2.4.5 位运算符,位运算是在程序设计中不经常使用,但是应用技巧性很强的一类运算。为运算主要包括“”,“”,“”和“&”。“”是右移运算符,实际上就是变量除二。“”是按位取反运算符,即把变量的二进制取反。“”是把两个变量按位进行异或。“&”是两个变量按位相与。,2.4.6 逗号运算符,逗号运算符是一类比较特殊的运算符,其是将多个表达式连接起来。逗号运算符又称为顺序求值运算符。,2.5 表达式和语句,由运算符构成的式子称为C+语言的表达式。常见的表达式有赋值表达式,算术表达式和逗号表达式。赋值表达式是由赋值运算符构成的表达式,例如int a=10;虽然赋值表达式十分简单,但其应用广泛。函数的返回值可以直接作为赋值表达式右半部分,例如函数int fun(),我们可以这样写出赋值表达式int i=fun()。逗号表达式即前面讲解的由逗号运算符构成的表达式。,2.6 程序控制结构,C+语言中有三种基本的程序控制结构,分别是顺序结构、选择结构和循环结构。几乎所有应用软件都会使用这三种程序控制结构。顺序结构比较简单,程序按照语句的顺序执行。选择结构和循环结构可以完成很多复杂的功能。本节对三种控制结构进行分析,讲解操作实例。,2.6.1 顺序结构,顺序结构是最简单、最常用的程序结构。顺序结构的典型特点是程序完全按照语句出现的先后次序执行。在顺序结构的程序中,最常用的是赋值语句。赋值语句是C+程序中最基本的语句,其作用是将表达式的值赋给变量或对象。赋值语句的语法格式如下。name=expression;其中,name为变量或者对象,expression为表达式。,2.6.2 选择结构,选择结构是利用条件语句实现的。根据指定的条件表达式的结果,选择符合条件的某一分支执行相关操作。条件语句中的条表达式通常是关系表达式、逻辑表达式、数字表达式或者字符串表达式。选择结构程序设计是应用程序设计过程中较为常用的结构。关系运算符是选择结构中常用的判断语句。在C+语言中常用的就是ifelse语句,其最常用的形式有下面三种形式:1第一种样式2第二种样式3第三种样式,2.6.3 循环结构,循环程序设计也是程序设计中常用的结构之一。程序中一些代码段需要重复执行以实现某些功能。例如程序中要计算1加到100的值,那么如果选择顺序结构,那么相加语句至少要写99条,而如果使用循环结构,程序的结构会十分清晰。循环结构中常用的形式是for循环,while循环和do while循环,以及goto语句。1for循环2while循环3goto语句4do-while循环5break和continue语句,2.7 C+的输入输出,在C语言中进行I/O操作时使用的语句是scanf和printf语句。scanf和printf语句所使用的格式控制符与输入输出数据必须完全一致,但是C语言的编译器不会去检查这些问题,造成编程中的一些困难。在C+语言中使用了更安全和更方便的I/O操作,即C+使用标准的输入输出流。C+预定义的标准流如表2-3所示。1标准输入2标准输出,2.8 编程实例与调试,通过本章的学习,掌握了C+语言的基础知识,下面介绍C+程序设计中代码编写和程序调试的基本方法。,2.8.1 代码编写,分析基本问题后,就需要把实际问题抽象成一定的数学模型,然后通过软件设计工具进行描述后,根据此流程图编写程序。代码编写是程序中的基本工作之一,当把问题的数学模型做好以后,根据数学模型作出程序流程图,剩下的工作就是去编程实现。因此代码编写把数学模型去实现。那么代码编写要注意哪些问题呢?首先是注意根据程序流程图编写代码。然后注意代码的习惯。最后就是注意对代码的重复使用。,2.8.2 Visual C+项目文件介绍,在利用Visual C+进行软件开发时会在当前的工程目录下生成多个类型的文件。例如后缀名为.cpp文件是源码文件,而后缀名为.h文件是头文件。根据第一章使用向导创建的控制台的应用,其目录下生成的文件的后缀名如下:.dsp文件:.dsw文件:.plg文件:.opt文件:.ncb文件:.h文件:.cpp文件,2.8.3 调试与运行,程序代码编写完成后不可能没有错误,甚至说程序的逻辑错误比起语法错误更为严重。因此程序的调试就显的尤为重要。程序调试中可以利用单步执行,手工进行查找程序中的错误,然后进行排错。当然可以里哟没那个软件工程中的软件测试方法进行软件测试,确保软件的正确性。一般来说在Visual C+中常用的测试是单步运行和断点测试。,2.9 本章实例数据排序,【示例2.38】设计一个程序,对输入的十个整数按照从小到大进行排序。,2.10 上机实践,1编写程序,求解1+2+3+99的值。,2.11 小结,本章主要介绍了C+的基本语法知识。C+语言是C语言在面向对象的扩充。C+语法和C语言的语法基本是相同的,C+使用了新的I/O。通过本章的学习,掌握C+程序设计的基本步骤,掌握一般程序的调试方法。,2.12 习题,1什么是面向对象的程序设计?2C+语言的数据类型和运算符有哪些?3常用的程序设计结构包括哪几种?其特点分别是什么?4简述常用的几种循环结构的形式和特点。5编写程序筛选100以内的素数。6编程实现打印下面的图案。7输入10个数据,从小到大进行排序并在屏幕上输出结果(利用while循环和do-while循环两种方法)。,第3章 函数,函数是实现某个特定功能的程序段。一个较大的程序需要由若干模块组成。模块化设计是当今软件工程所提倡的软件设计方法。一个C+程序可以由一个主函数和若干个子函数构成。函数的使用是当今软件设计中最为重要的方法之一。本章讲解的主要内容包括:函数的定义;函数的调用;函数运用实例。,3.1 概述,程序设计中可以用函数的形式设计能够完成某个功能的代码段。在整个软件中由主函数调用其它函数,其它函数之间也可以相互调用,同时一个函数可能被调用一次或多次。,3.2 函数定义,程序设计中经常需要进行函数的设计,函数的使用一般包括函数的定义和函数的使用。本小结就函数的定义进行介绍。,3.2.1 函数定义的一般形式,C+程序中函数的定义形式如下:类型标识符 函数名(参数列表)声明部分语句,3.2.2 函数参数,在上面可以看到函数的定义中有参数列表,那么什么是函数参数呢?在程序中主函数和其他函数进行调用的时候,一般都会有数据的传递,这就是参数。当然有的函数是没有参数的。下面先给出一个简单的函数定义及调用的例子。,3.2.3 函数的返回值,通常,函数的调用都可以返回一个特定的值,即函数的返回值。例如比较大小的函数,我们需要得到最大的值,利用赋值语句可以把函数的返回值赋给变量。下面对函数返回值进行说明。(1)函数的返回值通过函数的return语句获得。(2)函数的返回值的类型即函数的定义的类型。(3)当函数返回值与函数定义的类型不同时,系统自动进行转换,得到函数定义的类型的返回值。,3.3 函数的调用,函数定义后,需要在程序中使用该函数来完成某种功能,上面的例子已经简单的进行了函数调用,本小节会系统的对函数调用进行说明。,3.3.1 函数调用的一般形式,函数的一般调用形式为:函数名(实参表列)一个函数有可能拥有一个或者多个参数,当然也可以没有参数。在函数定义是需要指定函数的参数,此时的函数参数称为形参。在函数调用时需要对这个函数传递变量,此时所传递的变量称为实参。一般情况下实参和形参的个数应该是相等的,但是C+语言有可能存在默认参数,所以实参和形参的个数有可能不同。函数调用有以下几种形式:1函数语句2函数表达式3函数作为参数,3.3.2 函数的嵌套调用,在C语言中,函数可以嵌套调用,在C+中函数的嵌套调用和C语言中是完全一致的。首先介绍函数的嵌套调用,除了主函数外,普通函数中也可以调用其他函数,这样就是函数的嵌套调用。,3.3.3 函数的递归调用,在调用一个函数时,直接或间接的再次调用本身,那么此种调用就称为函数的递归调用。函数递归调用有可能出现函数无休止调用的情况,因此函数的递归调用一定有某种跳出语句,即应当在满足某种条件下进行递归调用,否则不进行递归调用。,3.4 函数应用实例与调试方法,函数的应用非常广泛,那么函数如何调用,又是如何返回到主程序中的呢?本小节就这些问题进行讨论。,3.4.1 函数应用实例的代码编写,函数应用首先就需要编写函数的代码。那么如何确定函数如何去编写呢?要编写一个函数,首先需要知道此函数要完成的功能是什么,然后去确定函数的参数,参数和函数的功能是密不可分的。例如函数功能是实现比较两个数,那么函数的返回值就是较大或者较小的数,当然有可能返回其他值。但是返回值肯定是在程序中需要得到的。如绦蛉肥挡恍枰杓品祷刂担敲纯梢苑祷0,或者设计函数为void类型。下面结合实例进行分析。,3.4.2 断点跟踪调试,调试程序时,经常利用设置断点使程序可停止的运行,这样可以在程序中动态的查看变量的值。断点设置的方法是:在要设置断点的位置单击,光标闪动,右击,在弹出的快捷菜单中单击“Insert/Remove Breakpoint”命令即可在光标处设置以断点。取消时同样是在要取消断点的那一行右击,在弹出的快捷菜单中单击“Remove Breakpoint”命令即可取消本行的断点,或者利用弹出的快捷菜单的“Disable Breakpoint”命令和“Enable Breakpoint”设置断点状态。下面结合一个实例介绍利用断点跟踪调试的基本方法。,3.5 本章实例汉诺塔游戏,函数的应用十分广泛,利用函数可以完成某一个功能,这样就使整个程序模块化更加清晰。下面给出函数综合应用的具体实例。【示例3.12】编程实现汉诺塔游戏,输入一个整数(不大于10),输出转移过程。,3.6 上机实践,1利用函数递归调用求解的值,其中N不大于5。参考代码:,3.7 小结,本章讲解了函数的定义和使用,讨论了函数的嵌套和递归。对于C+语言,函数的使用非常重要。利用函数可以进行某一模块功能的实现,使得程序可以进行模块化设计。在学习本章时,读者应该多进行上机操作,同时注意C+中语言的嵌套和递归的特点。了解C+中常用的库函数,以及函数所在的头文件。,3.8 习题,1什么是函数?2用递归法把一个整数m转化为倒叙排列。列入345变为543。m的位数不确定,可以为任意位数的整数。3八皇后问题:在8*8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意的两个皇后都不能处于同一行,同一列或同一条斜线上。问有多少种摆放方法。(提示:利用递归函数实现),第4章 C+的面向对象编程,C+是面向对象的程序设计语言,类是其实现面向对象的工具。类是面向对象程序设计(OOP)实现信息封装的基础,是C+语言最重要的特性。类是进行数据封装和数据保护的工具。本章主要知识点为:类和对象的基本概念;友元;派生类;继承与多重继承;多态;函数重载和运算符重载;虚函数。,4.1 类和对象的基本概念,类是现实事物共有特征的抽象,而对象是类的具体实例。在面向对象的程序设计中,总是先声明类,再由类生成其对象。类是建立对象的模板,对象则是类的一个实例。,4.1.1 从结构到类,在C语言中有一种自定义的数据类型:结构体。结构体中可以函数不同的数据类型。C+语言把结构体进行扩充,它不仅可以含有不同的数据类型,而且可以含有函数。在C+中结构体的定义形式如下:struct 结构体名成员表列变量名表列;struct是定义结构体的关键字,后面的结构体名是结构体的名称。在结构体中可以定义一个或多个成员变量或这函数。当然也可以不定义变量,此时称为空结构体。变量名表列是在定义结构体时,同时定义结构体变量。也可以不定义变量,在后面用到的地方在定义结构体变量。需要注意的是结构体右括号的变量名表列后面需要添加一个“;”。,4.1.2 成员函数的定义,类中含有两种成分:数据成员和函数成员。函数成员又称为成员函数。成员函数的定义有两种方式。1方式一2方式二,4.1.3 对象的定义与使用,对象是类的具体实例,定义好类以后必须去定义类的对象才可以真正的去实现类的功能。一般情况下对象的定义有下面两种情况。1声明类时直接定义对象2声明类之后再定义对象,4.1.4 对象的作用域,类是面向对象的体现,它具有一定的数据保护功能。类的作用域就是类的保护功能的机制。类的作用域是指类的声明部分中的一对花括号所形成的作用域。一个类的所有成员都在该类的作用域内。在上面的例子中已经看到类的私有成员变量不可以在类的外部所访问,因此需要定义一个公有成员函数间接的访问类的私有成员。,4.2 构造函数和析构函数,类是一种用户自定义的数据类型。定义一个类的对象时,编译程序需要为对象分配存储空间,进行必要的初始化工作。在C+中类的构造函数就是去实现这部分功能。,4.2.1 构造函数,构造函数是一种特殊的成员函数,它主要进行一些初始化工作。构造函数有一些基本性质:(1)构造函数和类的名字相同。(2)构造函数不具有返回值。(3)定义对象时,系统自动调用构造函数。(4)构造函数是公有函数,但它不可以被显示调用。,4.2.2 默认参数的构造函数,对于有参数的构造函数,在定义对象时必须给构造函数传递参数。实际情况中,虽然有些构造函数有参数,但其参数是不变的,这就是默认参数的构造函数。此时构造函数的形式如下:类名(函数名)(参数1=默认值,参数2=默认值,.)构造函数中的参数与普通函数的参数是一样的,所谓的默认参数即为该参数设置一个默认的取值。可以为全部或者部分参数设置默认值。,4.2.3 析构函数,析构函数也是一种特殊的成员函数,它执行和构造函数相反的工作。析构的特殊性质如下:(1)析构函数名称与类名相同,但前面加一个“”。(2)一个类中只有一个析构函数,并且该函数不带任何参数。(3)当撤销对象时编译系统自动调用析构函数。(4)若程序员没有定义析构函数,编译系统会生成析构函数。,4.2.4 重载构造函数与拷贝构造函数,C+允许重载构造函数,所谓的重载构造函数是指允许在类中有多个构造函数。当然这些构造函数肯定是有区别的。各个构造函数必须拥有不同的参数个数或者参数类型。,4.3 友元,类的主要特点是是数据隐藏,即类的私有成员只可以被类的内部使用,但是有的时候需要在类的外部访问类的私有成员,为此C+利用了一种新的机制友元。,4.3.1 友元函数,友元函数不是类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有成员。在类的定义中声明友元函数时,需要在函数名前面加上friend。友元函数可以定义在类的内部,也可以在类的外部定义。注意:友元在类的封装性中打了个孔,使封装性的强度下降,程序中如非必要,应尽量减少友元的使用。,4.3.2 友元成员,除了一般的函数可以作为类的友元外,一个类的成员函数也可以作为另一个类的友元。这样的函数不仅可以访问本类的所有成员,还可以访问其友元类的所有成员。需要注意的是当在一个类中的某个成员函数定义为另一个类的友元函数时需要首先定义此类。例如要定义类A的某个函数为类B的友元函数,那么需要先定义类B,然后再进行类A的成员函数与B友元的定义。,4.3.3 友元类,不仅函数可以作为一个类的友元,一个类也可以作为另一个类的友元。定义方法是在类的声明中加入语句friend类名。,4.4 派生类,继承是面向对象程序设计的一个重要特性,它允许在现有类的基础上创建新的类,可以继承原有类数据和函数,同时可以添加新的成员。继承特性增加了代码的重复利用率,加快开发效率。通过继承已有的一个或多个类产生一个新类的过程称为派生。通过派生可以创建一种新的类,所创建的新类称为派生类。,4.4.1 派生类的引出,现实世界中,继承的概念十分广泛。人们认识世界就是一个层次结构。越靠近上层就表示越为普遍的概念,例如下面的一个层次结构:在类中,继承的概念就是从父辈得到其属性。即产生的新类就是原有类的派生。原有类就是派生类的基类。派生类的声明形式如下:class 类名:继承方式 基类,4.4.2 基类成员在派生类中访问属性,派生类继承基类的方式有三种情况,那么继承过来的成员其属性如何呢?下面给出三种继承方式下的基类成员在派生类中的访问属性。,4.4.3 派生类对基类成员的访问规则,派生类对基类成员的访问形式包括内部访问和对象访问两种方式。下面对三种继承方式下的访问规则分别进行介绍。1私有继承2保护继承3公有继承,4.5 派生类的构造函数与析构函数,派生类继承了基类的成员,实现了代码的重复利用,但是继承的目的更主要的是功能的扩充。基类的构造函数和析构函数不能被继承。如果在派生类中需要对新增加的成员进行初始化,则需要加入派生类的构造函数。同样派生类也需要添加虚构函数来实现一些结束工作。,4.5.1 派生类构造函数和析构函数的执行顺序,当创建对象时,编译系统会自动调用构造函数。当撤销对象时,编译系统会自动调用析构函数。当创建派生类的对象时,首先执行基类的构造函数,然后执行派生类的构造函数。当撤销对象时,则先执行派生类的析构函数,然后再执行基类的析构函数。,4.5.2 派生类构造函数和析构函数的构造规则,派生类不能继承基类的构造函数,如果基类中含有带参数的构造函数,则派生类中必须定义构造函数,用以向基类传递参数。派生类的构造函数的定义必须包含基类的参数,其定义的一半格式为:派生类名(全部参数列表):基类名(参数列表)派生类的析构函数和基类的析构函数关系不大,程序中可以分别进行设计。,4.6 继承与多重继承,继承使得派生类既保持了基类的特性,又可以增加新的功能。如果一个类,其属性可以从多个基类中获得,这就需要多重继承的概念。,4.6.1 继承和多重继承,继承是一个类从一个基类中派生,多重继承则是指一个类从多个基类进行派生。现在有一个类A和类B,现在要设计一个类C,它需要既继承类A的特性,又继承类B的特性,那么类C就需要多成继承类A和类B。,4.6.2 多重继承的声明,在C+中,类的多重继承与单继承的声明相似,其一般形式是:class 派生类名:继承方式1 基类1,继承方式n 基类n 在多重继承中,派生类的构造函数要进行基类的初始化工作,因此如果任何一个基类的构造函数含有参数,那么派生类必须添加构造函数。构造函数的执行顺序是先执行基类的构造函数。在执行派生类的构造函数,同一层次的基类的执行顺序与声明时的顺序有关。相反析构函数的执行与构函数的顺序相反。,4.6.3 虚基类,如果一个派生类的基类是从一个共同的基类派生出来的,那么派生类的对象就是从底层基类的间接派生,它会出现多个基类的拷贝,程序中如何进行分辨呢?一种方法是利用作用域运算符,即在访问基类的成员时明确指出要访问的是哪一个基类的数据成员。另一种方法是利用虚基类。虚基类是让基类只有一个拷贝,程序中的访问就不会出现访问的不确定性。虚基类在派生类中声明,其格式为:class 派生类名:virtual 继承方式 基类虚基类的声明与普通的继承形式相同,只不过要在继承方式的前面添加关键字:“virtual”。当使用虚基类时,基类只有一个拷贝,程序中的访问具有确定性。,4.7 多态的基本概念,程序的多态性是指不同的对象收到相同的消息而作出不同的动作。多态性包括运行时的多态性和编译时的多态性。编译时的多态性是指编译时的多态,通过函数重载和运算符重载来实现。运行时的多态则通过继承和虚函数来实现。1编译时的多态性2运行时的多态性,4.8 函数重载和运算符重载,函数重载和运算符重载可以实现编译时的多态性,从而可以动态的决定程序的动作。函数重载可以使程序设计更加灵活。运算符重载利用运算符函数来实现。,4.8.1 函数重载,派生类可以改写基类的成员函数,从而实现新的功能。这就是函数重载。函数重载后,程序员使用派生类的对象可以访问基类或者是派生类的成员函数。函数重载提高了程序设计的灵活性。,4.8.2 运算符重载,在C+中,除了对、可以对函数进行重载外,还可以对运算符进行重载。运算符的重载通过创建运算符函数operator来实现。运算符重载定义了重载的运算符的操作。函数ooperator的操作对象是一个类,同时operator可以是这个类的成员函数,可以是类的友元函数。运算符重载在实际运用中有十分重要的意义,例如复数的四则运算就可以借助运算符重载来实现。运算符重载包括两种形式,一是重载为类的成员函数,一是重载为类的友元函数。其形式如下:1重载为类的成员函数:函数类型 operator 运算符(参数表)2重载为友元函数:friend 函数类型 operator 运算符(参数表),4.9 虚函数,虚函数是重载的另一种表现形式,它提供了一种动态机制,使程序运行更加灵活。一个基类的指针可以指向派生类的对象,但是利用基类指针调用类的函数时仍然调用的是基类的成员函数。例如下面的例子。,4.10 本章实例类的使用,上面介绍了继承、多态和重载的基本概念和使用方法。C+作为面向对象的程序设计语言,继承、多态和重载的出现使C+面向对象的特点体现的更加明确。本节给出几个例子。【示例4.26】创建复数类,利用运算符重载,实现其加法和减法。,4.11 小结,继承、封装和多态是面向对象程序设计的三大特性。本章详细介绍了C+的面向对象程序设计理论。介绍了类的基本概念和基本操作。对派生类和基类的构造函数和析构函数的执行顺序进行分析。讨论了如何通过虚函数实现多态,介绍了纯虚函数将接口与实现进行分离。Visual C+提供类库,其是一整套的类,掌握类的继承、封装和多态是利用MFC进行程序设计的基础。

    注意事项

    本文(Visual-C从入门到实践.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开