资源预览内容
第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
第9页 / 共35页
第10页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目 录第一章 认识C+的对象31.1 初识C+的函数和对象31.2 认识C+语言面向过程编程的特点41.3 程序的编辑、编译和运行的基本概念5第二章 从结构到类的演变62.1 结构的演化62.2 从结构演变一个简单的类62.3 面向过程与面向对象62.4 C+面向对象程序设计的特点62.5 使用类和对象72.6 string对象数组与泛型算法7第3章 函数和函数模板73.1 函数的参数及其传递方式73.2 深入讨论函数返回值83.3 内联函数93.4 函数重载和默认参数93.5 函数模板9第4章 类和对象104.1 类及其实例化104.2 构造函数114.3 析构函数124.4 调用复制构造函数的综合实例134.5 成员函数重载及默认参数134.6 this指针134.7 一个类的对象作为另一个类的成员134.8 类和对象的性质134.9 面向对象的标记图144.10 面向对象编程的文件规范15第五章 特殊函数和成员165.1 对象成员的初始化165.2 静态成员175.3 友元函数175.4 const对象185.5 数组和类195.6 指向类成员函数的指针195.7 求解一元二次方程20第六章 继承和派生206.1 继承和派生的基本概念206.2 单一继承206.3 多重继承226.4 二义性及其支配规则22第七章 类模板与向量227.1 类模板227.2 向量与泛型算法237.3 出圈游戏25第八章 多态性和虚函数258.1 多态性258.2 虚函数258.3 多重继承与虚函数278.4 类成员函数的指针与多态性27第9章 运算符重载及流类库279.1 运算符重载279.2 流类库289.3 文件流31第10章 面向对象设计实例3210.1 过程抽象和数据抽象3210.2 发现对象并建立对象层3310.3 定义数据成员和成员函数3310.4 如何发现基类和派生类结构3410.5 接口继承与实现继承3410.6 设计实例35第一章 认识C+的对象1.1 初识C+的函数和对象一般称现实世界中客观存在的事物为对象。1.混合型语言C+程序以.cpp作为文件扩展名,并且必须有一个且只能有一个名为mian(不是C+的关键字)的主函数。真正的面向对象的语言没有主函数,C+保留了这个面向过程的主函数,所以称之为混合型语言。2.灵活的注释方式3.使用输出和输入对象C+将数据从一个对象流向另一个对象的流动的抽象称为“流”。从流中获取数据的操作称为提取操作。向流中添加数据的操作称为插入操作。cin用来处理标准输入,即键盘输入。cout用来处理标准输出,即屏幕输出。4.使用命名空间所谓命名空间(namespace)是一种将程序库名称封装起来的方法,它提高了程序的性能和可靠性。C+新标准就是将标准类库中的头文件与一般的头文件(需要使用扩展名“.h”)区分开来。当然,也可以自己定义符合标准库的头文件,使用这种头文件时,也需要同时使用命名空间语句。如果仍然使用C库中的头文件,则需要使用扩展名“.h”形式,例如和。如果使用C+提供的头文件,则不需要使用扩展名“.h”,例如,。注意C+库中替代C库中的头文件的正确名称,例如可以使用替代。5.对象的定义及初始化定义对象包括为它命名并赋予它数据类型。6.函数原型及其返回值函数都需要有类型说明。int main() 指出main是整数类型,返回值由return后面的表达式决定,且表达式的值必须与声明函数的类型一致。C+使用变量的基本规则是:必须先声明,后使用,对函数调用也是如此。7.const修饰符和预处理程序C语言一般使用#define定义常量,在C+中,建议使用const代替宏定义。const是放在语句定义之前的,因此可以进行类型判别。用关键字const修饰的标识符是一类特殊的常量,称为符号常量,或const变量。使用const允许编译器对其进行类型检查并可改善程序的可读性。C+语言可以使用宏定义。无参数的宏作为常量,而参数的宏则可以提供比函数更高的效率。但预处理只是进行简单的文本代替而不进行语法检查,所以会存在一些问题。因为被const修饰的变量的值在程序中不能被改变,所以在声明符号常量是,必须对符号常量进行初始化,除非这个变量使用extern修饰的外部变量。C+语言预处理程序不是C+编译程序的一部分,它负责分析处理几种特殊的语句,这些语句被称为预处理语句。顾名思义,预处理程序对这几种特殊语句的分析处理是在编译程序的其他部分之前进行的。为了与一般的C+程序语句相区别,所有预处理语句都以位于行首的符号“#”开始。预处理语句有3种,分别是宏定义、文件包含和条件编译。预处理程序把所有出现的、被定义的名字全部替换成对应的“字符序列”。#define中的名字与C+中的标识符有相同的形式,为了区别,往往用大写字母来表示(标识符用小写字母),这也适合const语句。文件引用使用双引号还是尖括号,其含义并不一样。采用尖括号引用系统提供的包含文件,C+编译系统将首先在C+系统设定的目录中寻找包含文件,如果没有找到,就到指定的目录中去寻找。采用双引号引用自己定义的包含文件(一般都放在自己定义的指定目录中),这将通知C+编译器在用户当前的目录下或指定的目录下寻找包含文件。指定的目录不必在同一个逻辑盘中。8.程序运行结果9.程序书写格式1.2 认识C+语言面向过程编程的特点C+语言的标准模板库(Standard Templete Library,STL)提供了与要操作的元素类型无关的算法,不仅使许多复杂问题迎刃而解,而且也将许多面向对象的程序设计问题转化成基于对象的面向过程编程。1.2.1 使用函数重载C+允许为一个函数定义几个版本,从而使一个函数名具有多种功能,这称为函数重载。1.2.2 新的基本数据类型及其注意事项void是无类型标识符,只能声明函数的返回值类型,不能声明变量。C+语言还比C语言多了bool(布尔)型。C+标准只限定int和short至少要有16位,而long至少32位,short不得长于int,int不得长于long。地址运算符“&”用来取对象存储的首地址。C+语言中的整数常量有4种类型:十进制常量、长整型常量、八进制常量和十六进制常量,并用前缀和后缀进行分类标识。1.2.3 动态分配内存在使用指针时,如果不使用对象地址初始化指针,可以自己给它分配地址。对于值存储一个基本类型数据的指针,申请的方式如下:new 类型名size /申请可以存储size个该数据类型的对象不再使用时,简单地使用“delete指针名”即可释放已经申请的存储空间。1.2.4 引用别名的地址就是原来对象的地址,选定命名时使用“引用”运算符“&”,再选用数据类型与之配合。引用的声明方式如下:数据类型& 别名=对象名;所谓“引用”就是将一个新标识符和一块已经存在的存储区域相关联。因此,使用引用时没有分配新的存储区域,它本身并不是新的数据类型。引用通常用于函数的参数表中或者作为函数的返回值。对引用实质性的理解应抓住如下两点:(1)引用实际上就是变量的别名,使用引用就如同直接使用变量一样。引用与变量名在使用的形式上是完全一样的,引用只是作为一种标识对象的手段,不能直接声明对数组的引用,也不能声明引用的引用。(2)引用的作用与指针有相似之处,它会对内存地址上存在的变量进行修改,但它不占用新的地址,从而节省开销。1.2.5 对指针使用const限定符可以用const限定符强制改变访问权限。1.左值和右值左值是指某个对象的表达式。2.指向常量的指针指向常量的指针是在非常量指针声明前面使用const,例如:const int *p;它告诉编译器,“*p”是常量,不能将“*p”作为左值进行操作,即限定了“*p=”的操作,所以称为指向常量的指针。3.常量指针把const限定符放在*号的右边,是使指针本身称为一个const指针。int x=5;int * const p=&x;不能改变p的指向,但可以通过间接引用运算符“*”改变其值,例如语句“*p=56;”将上面的x的值改变为56。4.指向常量的常量指针也可以声明指针和指向的对象都不能改动的“指向常量的常量指针”,这时必须要初始化指针。例如:int x=2;const int * const p=&x;告诉编译时,*p和p都是常量,都不能作为左值。1.2.6 泛型算法应用于普通数组所谓泛型算法,就是提供的操作与元素的类型无关。1.2.7 数据的简单输入输出格式C+提供了两种格式控制方式:一种是使用ios _base类提供的接口;另一种是使用一种称为操控符的特殊函数,它的特点是可直接包含在输出和输入的表达式中,因此更为方便,不带形式参数的操控符定义在头文件中,带形式参数的操控符定义在头文件中。使用它们时,一是要正确包含它们,二是只有与符号“”连接时才起作用,三是无参数的操控符函数不能带有“()”号。1.3 程序的编辑、编译和运行的基本概念用C+语言写成的程序称为源程序,源程序必须经过C+编译程序翻译成机器语言才能执行。要得到一个用C+语言设计的、名为myapp.exe的可执行文件,其过程可分为如下几步:(1)先使用编辑器编辑一个C+程序mycpp.cpp,又称其为C+的源程序。(2)然后使用C+编译器对这个C+程序进行编译,产生文件mycpp.obj(3)再使用连接程序(又称Link),将mycpp.obj变成mycpp.exe所谓集成环境,就是将C+语言编辑、编译、连接和运行程序都集成到一个综合环境中。第二章 从结构到类的演变2.1 结构的演化类是从结构演变而来,开始称为“带类的C”。这种演变就是从让结构含有函数开始的。2.1.1 结构发生质的演变1.函数与数据共享2.封装性2.1.2 使用构造函数初始化结构对象2.2 从结构演变一个简单的类2.3 面向过程与面向对象所谓“面向过程”,就是不必了解计算机的内部逻辑,而把精力主要集中在对如何求解问题的算法和过程的描述上,通过编写程序把解决问题的步骤告诉计算机。所谓函数,就是模块的基本单位,是对处理问题的一种抽象。结构化程序设计使用的是功能抽象,面向对象程序设计不仅能进行功能抽象,而且能进行数据抽象。“对象”实际上是功能抽象和数据抽象的统一。面向对象的程序设计方法不是以函数过程和数据结构为中心,而是以对象代表求解问题的中心环节。他最求的是现实问题空间与软件系统解空间的近似和直接模拟。软件开发是对给定问题求解的过程。从认识论的角度看,可以归为两项主要的活动:认识与描述。软件开发者将被开发的整个业务范围称作“问题域”(problem domain),“认识”就是在所要处理的问题域范围内,通过人的思维,对该问题域客观存在的事物以及对所要解决的问题产生正确的认识和理解,包括弄清事物的属性,行为及其彼此之间的关系并找出解决问题的方法。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号