C++课件1第一讲——C++与C的关系

上传人:E**** 文档编号:90579107 上传时间:2019-06-13 格式:PPT 页数:80 大小:520.50KB
返回 下载 相关 举报
C++课件1第一讲——C++与C的关系_第1页
第1页 / 共80页
C++课件1第一讲——C++与C的关系_第2页
第2页 / 共80页
C++课件1第一讲——C++与C的关系_第3页
第3页 / 共80页
C++课件1第一讲——C++与C的关系_第4页
第4页 / 共80页
C++课件1第一讲——C++与C的关系_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《C++课件1第一讲——C++与C的关系》由会员分享,可在线阅读,更多相关《C++课件1第一讲——C++与C的关系(80页珍藏版)》请在金锄头文库上搜索。

1、第一讲 C+与C的关系,第一部分 C+的发展历史简介 第二部分 C+对C常规性能的扩充,第一部分 C+发展历史简介,随着面向对象程序设计思想的日益普及,很多支持面向对象程序设计方法语言也相继出现了,C+就是这样一种语言。C+是Bjarne Stroustrup于1980年在AT&T的贝尔实验室开发的一种语言,它是C语言的超集和扩展,是在C语言的基础上扩充了面向对象的语言成分而形成的。最初这种扩展后的语言称为带类(class)的C语言,1983年才被正式称为C+语言。,Bjarne Stroustrup在设计和实现C+语言时,既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向

2、对象编程的支持,具有强大的编程功能,编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。 C+语言由C语言扩展而来,同时它又对C语言的发展产生了很大的影响,ANSI C语言在后来的标准化过程中吸收了C+语言中某些语言成分。,C+语言是C语言的超集,与C语言具有良好的兼容性,使用C语言编写的程序几乎可以不加修改直接在C+语言编译环境下进行编译。 C+语言对C语言在结构化方面做了一定程度的扩展。,第二部分 C+对C常规性能的扩充,1. 基本输入流和输出流类 2. 变量及常量 3. 引 用 类 型 4. 函 数 5. 函数重载 6. 带默认形参值的函数 7. 名字空

3、间 8. new和delete 运算符 9. 行 注 释,1. 基本输入流和输出流类,除了C语言的标准输入输出外,C+语言又提供了类层次结构的输入输出流类库。完整的C+输入输出流类库在很多书籍中介绍,这里不再详述。为方便讲解中的程序举例,这里我们简单介绍C+中最常用的基本输入流和输出流。,C+语言把设备之间的信息交换称作“流”是非常形象的。外部设备到计算机的输入信息和计算机到外部设备的输出信息就像是一条条的水流。因此,C+语言把设备之间的信息交换称作流,把实现设备之间信息交换的类称作流类,把按面向对象方法的许多个流类构成的流类族(层次集合)称作流类库。C+语言给用户提供了功能完整的、组织成类层

4、次的、可方便扩充的流类库。流类库中的每一个流类定义了设备之间一种方式的信息交换。,流库中iostream类是最常用的基本输入输出流类。iostream类是基本输入类istream和ostream多重继承派生出的。iostream类中包括了键盘输入类、屏幕输出类和错误信息输出类。cin、cout和cerr分别为键盘输入类、屏幕输出类和错误信息输出类的系统默认对象。cin对象键盘输入的运算符为“”,cout对象和cerr对象屏幕输出的运算符为“”。,例如: #include / 包含iostream.h头文件 void main(void) char name30; cout name; / 输入

5、 cout “name n“ name endl; / 多个输出 ,上例中,第一行用include语句包含了iostream.h头文件。cin是键盘输入类的系统默认对象,它的输入操作的运算符为,它的参数为变量name。运算符可看作函数的另一种形式的表示,所以运算符也可以有参数。cout是屏幕输出类的系统默认对象,它的输出运算符为。 输入运算符和输出运算符都允许一个对象连续多次使用。endl是换行操作符,每执行一次endl操作符换一行。转义字符n的功能也是换一新行。,与C语言的输入函数scanf( )和输出函数printf()相比,C+语言的cin对象的输入运算符()和cout对象的输出运算符(

6、和输出运算符来方便地输入输出用户自定义数据类型的数据。C+语言的这些性能极大地方便了用户的程序设计。,2. 变 量,C+语言中的变量和C语言中的变量相比,功能扩充之处主要体现在:变量的定义方法、作用域限定运算符、枚举类型、结构体类型、const类型限定符等。,2.1 变量的定义方法 C语言只允许变量在程序开始处定义,而C+语言允许变量在程序的任何位置定义,这就使得C+语言的变量除全局变量和局部变量外,又增加了块变量。C+语言把用花括号括起来的一块区域称为块。块变量就是定义在某个块中的变量。变量的作用域就是变量的作用范围。块变量的作用域就是该变量定义的由花括号括起来的范围,称作块作用域。块变量在

7、其作用域内是可见的,在其作用域外是不可见的。超出变量的作用域使用变量时,由于变量是不可见的而出错。,void main(void) int ii, jj, tt, v(6); for(int i = 0; i 10; i+) for(int j = 0; j i ; j+) int t = 1; ii = i; / 变量i使用正确 / jj = j; / 变量j超出作用域出错 / tt = t; / 变量t超出作用域出错 ,变量ii,jj,tt的作用域是整个主函数;变量i的作用域是从外层循环的for语句处到主函数末尾;变量j的作用域是从内循环的for语句处到外循环结束处;变量t的作用域是从定义

8、处到外循环结束处。,要说明的是,在循环语句(如for语句)中定义的变量,由于处于花括号外,因此其作用域不是在循环语句的花括号内,而是在花括号外。 另外,C+语言允许在定义变量时用括号格式赋初始值,如v(6),即变量v的初始值为6。int v = 6;此时的 = 不可读作等于,而是将整形变量v初始化为6。,2.2 作用域限定运算符 C+语言的运算符 : 称作作用域限定运算符,用于解决变量的名字冲突问题,主要用于访问一个在当前作用域内被当前局部变量隐藏的外层全局变量。下例中变量count有两个定义,定义在函数外的是整型,定义在函数内的是浮点型。定义在函数外的变量count作用域是整个文件,定义在主

9、函数内的变量count作用域是整个主函数。变量 :count就表示出了在当前作用域内被局部变量count隐藏了的全局变量count。,int count; void main(void) float count; count = 5.5; :count = 3; C+语言的运算符 : 还可用于限定数据成员或成员函数所属的类,这时把运算符 : 称作类名分辨运算符或类名分辨符,这将在以后的章节中介绍。,2.3 枚举类型 和C语言不同的是,C+语言的枚举类型是一个真正的类型名,即在C+语言中枚举类型可像其它类型一样使用。系统对待枚举变量将像对待其它变量一样。 C+的枚举类型一般形式是: enum 枚

10、举类型名 枚举列表 枚举变量表 ; 其中,enum是枚举类型标识关键字,枚举列表中定义的枚举值对应着符号数字常量,其编号从0开始。枚举变量可以放在以后需要变量时再定义。枚举类型允许变量使用的操作只有一个,即赋值操作。一个使用枚举类型定义变量的例子如下:,#include enum ColorRed, Gree, Yellow; void main(void) Color MyColor; / Color是枚举类型名 MyColor = Yellow; /对枚举变量赋值操作 cout MyColor; / MyColor中保存的值是符号数字常量2 MyColor = 5; /错,不能对枚举变量赋

11、整数值,类型不对 ,布尔类型 C+语言新增了bool类型。 如: bool a = 3; / a 的值其实为 true bool b = 1; / b 的值为 true bool c = a + b; / c 的值为 true bool d = a - b; / d 的值其实为false(不是3-1,而是1-1) 但在 C语言中: int a = 3; / a 的值为3,可视为 true int b = 1; / b 的值为1,可视为 true int c = a + b; / c 的值为4,可视为 true int d = a - b; / d 的值为2,可视为 true,2.4 结构体类型

12、 C+语言定义结构体类型的方法和C语言的定义方法基本类同,差别主要有下面两点。 (1) C+语言的结构体类型定义和使用更简单一些。结构体一旦定义,就可以直接使用该结构体名定义变量,而不用处处在结构体名前加标识符struct。例如:,#include struct ListNode / 结构体定义 int data; ListNode *next; ; void main(void) ListNode node; / ListNode是结构体名 node.data = 5; node.next = NULL; cout node.data; ,(2) C+语言把结构体看作类的特殊形式,即结构体是

13、将成员默认为公有的类。换句话说,在C+语言的结构体中也是类,也可以像类的定义那样,定义结构体的私有的、公有的成员函数和数据成员。关于结构体中成员函数的定义和使用方法可参看类的成员函数的定义和使用方法。,2.5 const类型限定符 C+语言中,const类型限定符用于限定某标识符在定义域范围内为常量,所限定的常量、函数参数等成为只读的,不能被修改。在C语言编程序时,通常用宏来定义常量,如 #define MaxSize 100; 用C+语言编程序时,通常用const来定义常量,如 const int maxSize = 100; 虽然两种方法均可定义程序中使用的常量,但两种方法有如下两点主要差

14、别:,(1) 宏定义命令定义的常量只是文本替换,如用100替换MaxSize,它没有数据类型;而const定义的常量带有数据类型,如maxSize就是整数类型。定义有数据类型的常量可使系统进行类型检查,从而防止程序出错。 (2) 宏定义命令定义的常量的作用域是从定义处到文件结束,或到用宏定义终止命令#undef取消其定义为止;而const定义的常量可像变量那样定义在文件内、函数内、块内或类内。显然,用const定义常量更加灵活、方便、广泛。,归结起来,const的用途主要有以下四点。 (1) 当const类型说明符用于说明变量时,其作用是冻结所定义的变量在定义域范围内为常量。C+要求用cons

15、t说明的变量必须在定义时初始化赋值,以后不允许再有赋值操作。 const说明的常量和同类型的变量具有单向兼容性。即,const说明的常量可赋给变量,但反之则不允许。如下例中,变量y定义为整型常量,若要把变量赋给该常量将出错。,void main(void) int x = 4; / 定义为变量 const int y = 5; / 定义为常量 x = y; / 给变量x赋值合法 /y = x; / 给常量y赋值出错 ,const说明的形参可被同类型的非const实参初始化。 #include void F1(const int x) cout x endl; void F2( int x) c

16、out x endl; void main(void) const int y = 20; int x = 5; F1(x); / 合法 F2(y); / 亦合法 ,例中,函数F1中可使用常整型和非常整型的实参。 函数F2中的形式参数定义为非常整型,主函数中的y定义为常整型,函数调用时意味着x是可以修改的。 当然改的不是y,而是x.,(2) 当const类型说明符用于说明指针类型变量时,有三种情况:冻结所定义的指针变量所指向的数据,冻结指针的地址值,或者冻结指针变量所指向的数据和指针的地址值。对于指针变量的这三种情况,const类型说明符的用法将不同。例如:,void main(void) int x = 5, y = 6; const int *

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号