面向对象程序设计及C++ 教学课件 ppt 作者 朱立华 朱建 俞琼 第2章_C++对C的改进及扩展

上传人:E**** 文档编号:89456868 上传时间:2019-05-25 格式:PPT 页数:85 大小:884KB
返回 下载 相关 举报
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第2章_C++对C的改进及扩展_第1页
第1页 / 共85页
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第2章_C++对C的改进及扩展_第2页
第2页 / 共85页
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第2章_C++对C的改进及扩展_第3页
第3页 / 共85页
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第2章_C++对C的改进及扩展_第4页
第4页 / 共85页
面向对象程序设计及C++ 教学课件 ppt 作者  朱立华 朱建 俞琼 第2章_C++对C的改进及扩展_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《面向对象程序设计及C++ 教学课件 ppt 作者 朱立华 朱建 俞琼 第2章_C++对C的改进及扩展》由会员分享,可在线阅读,更多相关《面向对象程序设计及C++ 教学课件 ppt 作者 朱立华 朱建 俞琼 第2章_C++对C的改进及扩展(85页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序程序设计及C+,主讲:,第2章 C+对C的改进及扩展,面向对象程序设计及C+,3,本章作业,作业本:P4953页:一、二、三、四、五(2、3),4,本章内容提要,新增的I/O控制方法及单行注释方法 const的灵活应用 在类型上的变化与增加 函数的新用法和要求:原型声明、内联函数、函数重载、默认参数值 新增引用的灵活应用 更加方便的动态内存空间的管理 异常处理的机制和方法,5,本章内容安排,2.1 新的输入/输出及注释方式 2.2 独具魅力的const修饰符 2.3 有关类型的区别 2.4 有关函数的区别 2.5 新增引用的灵活运用 2.6 动态内存空间管理 2.7 C+的异常处理

2、 2.8 本章小结,结束本章,6,2.1.1 C+的I/O流实现输入/输出,通过例2.1理解C+更为方便的输入输出控制方式 【例2.1】C+语言风格与C语言风格的源程序举例。 /*C语言风格的源程序li2_1.c,读入几个变量,运算后输出*/ #include void main( ) char c; int a; /*定义变量c、a、f */ float f; scanf(“%c%d%f“, ,cincaf ;,cout“c=“c“ a=“a“ f=“fendl ;,/*li2_1.cpp : C+语言风格源程序,与li2_1.c实现同样功能*/,/定义变量c、a、f,#include us

3、ing namespace std;,7,2.1.1 C+的I/O流实现输入/输出,对li2_1.c和li2_1.cpp这两个不同风格的程序,编译链接后, 若输入:A 25 100.1 则输出均为:c=A a=90 f=280.1 比较li2_1.c和li2_1.cpp两个程序,有以下几个区别。 C+源程序的扩展名为.cpp,而C源程序的扩展名是.c。 C+源程序中用cin和cout处理输入/输出,而C源程序中用scanf 和printf处理输入/输出 C+源程序中增加了一种以/开头的单行注释方式。,8,2.1.1 C+的I/O流实现输入/输出,C+语言用自己定义的流类库取代C语言中的输入/输

4、出库,更安全,使用时需要掌握以下几点: 必须用#include 及using namespace std;或用#include 作文件包含。 cin是C+语言中的标准输入流,代表标准输入设备,即键盘; cout是C+语言中的标准输出流,在程序中用于代表标准输出设备,通常指显示器。 运算符“”此时表示是流运算符,后面只能跟变量,表示把从输入流读取的数据传送给运算符“”右边指定的变量。利用 “”允许用户输入一连串的数据依次给各个变量,两个数据间以空白符(空格、回车、Tab键)分隔,故这种方式不能读入含有空格的字符串,9,2.1.1 C+的I/O流实现输入/输出,运算符“”在此时表示是流运算符,后面

5、可以跟常量、变量、表达式,表示将运算符“”右边的值写到输出流中,通常表现为显示在显示器屏幕上或写入到磁盘文件中。 例程中用cin和cout输入/输出数据时,全部使用了系统默认的格式,实际上可以利用操纵符进行格式控制,具体见第7章。 C+中新增加了一种换行控制符endl,与C语言中常用的n等效,实现输出时的换行。 例如下面两条语句的执行效果完全一样: cout“a=“aendl; 和 cout“a=“a“n“;,10,2.1.2 新增的单行注释,li2_1.cpp中出现了一种以“/”开始的注释方式 C+语言新增加单行注释方式“/” ,其注释内容是从“/”开始到本行结尾,只对单行有效,这种注释方式

6、特别适合于注释内容不超过一行的情况。 C+语言仍支持C语言的提供的/*/的注释方式,通常用于进行注释内容为多行的情况。 某些情况下两种注释方式可以嵌套,11,2.1.3 名字空间,C+语言提供名字空间(namespace)防止命名冲突。 1、名字空间的定义 (1)定义形式:namespace 名字空间名称 ; (2)关于名字空间定义的说明: 定义名字空间以关键字namespace开头,名字空间名称是合法的用户自定义标识符。 以一对大括号括起该名字空间的开始和结束处,右大括号后面不加分号。 在名字空间以外声明或定义的任何实体,都可以出现在名字空间内。,12,2.1.3 名字空间,2、名字空间中内

7、容的使用 方法一:在需要使用名字空间中内容时用下面的形式:名字空间名称:局部内容名,其中的“:”称为域解析符或作用域运算符,用来指明该局部内容来自于哪一个名字空间,从而避免命名冲突。 方法二:在使用该内容之前用:using namespace 名字空间名称;这样声明过以后,可以直接使用该名字空间中所有的内容, 方法三:using 名字空间名称:局部内容名;这样声明以后,可以直接使用该名字空间中这一局部内容名,而该名字空间中的其余内容在使用时仍要附加名字空间名称和域解析符。,13,【例2.2】关于名字空间的主要用法示例 #include using namespace std; /*using声

8、明使用一个完整的名字空间std,C+中提供的名字*/ /空间std涵盖了所有标准C+的定义和声明 namespace one /定义一个名字空间one,有M和inf const int M=200; int inf=10; /后面不加分号 namespace two /定义一个名字空间two,有x和inf int x; int inf=-100 ; /后面不加分号,2.1.3 名字空间,14,using namespace one ; /*using声明使用一个 完整的名字空间one*/ void main( ) using two:x ; /using声明仅使用two中的x x=-100 ;

9、 /直接访问,相当于two:x=-100; coutinfendl; /直接使用one中所有成员 coutMendl; two:inf*=2; /*使用名字空间名:局部内容名 操作未使用using声明的内容*/ couttwo:infendl; /*同样是two中的 内容,但是访问方式不一样*/ coutxendl ; /直接访问two中的x ,2.1.3 名字空间,15,程序的运行结果是: 10 200 -200 -100 C+语言提供的名字空间std涵盖了标准C+的定义和声明,包含了C+所有的标准库。本教材大部分程序使用名字空间std。,2.1.3 名字空间,返回,16,在C语言中,定义一

10、个符号常量需要用宏定义#define来实现,例如: #define PI 3.14159 宏定义常量的缺陷:对常量只作简单的替换而不作类型检查,容易出错 例: #define PI 3.14159 ;在语句s=PI*r*r作替换时会出错,因为替换后变成了:s=3.14159;*r*r 在C+语言中,利用const关键字提供了一种更灵活安全的定义常量的方式 定义PI常量const double PI=3.14159;,2.2.1 使用const修饰符定义常量,17,用const进行常量定义的几点说明: 用const定义符号常量的基本形式为: const 常量类型 符号常量名=常量值; 缺省的“常

11、量类型”为int型,const定义的符号常量有自己的数据类型,因此C+编译程序可进行更加严格的类型检查 符号常量定义的最后一定要有分号 定义的位置可以在函数体外或函数体内,只是作用域不同 符号常量用宏定义在C+语言中仍支持,但是建议使用更安全的const定义方式,2.2.1 使用const修饰符定义常量,18,例2.3:两种符号常量定义的区别示例 #include using namespace std; void main( ) int x=5; #define T1 x+x /用宏定义定义常量T1 #define T2 T1-T1 /用宏定义定义常量T2 cout“T1=”T1“ T2=”

12、T2; ,2.2.1 使用const修饰符定义常量,运行结果:T1=10 T2=10,const int T1=x+x ; /用const定义定义常量T1,const int T2=T1-T1; /用const定义定义常量T2,运行结果:T1=10 T2=0,19,2.2.2 const修饰符与指针的结合,在定义指针时,若与const修饰符结合在一起使用,根据const出现的次数及二者位置关系的不同,可以定义3种不同的指针指向常量的指针、常指针、指向常量的常指针 1、指向常量的指针 定义形式:const 类型名 * 指针名; 例如:int x=5; const int *p; p= 含义:指针

13、p本身是变量,但是不能通过直接对*p的修改来改变p所指向的内容 上例中可以用x=1;修改p所指向的内容,但是如果改用*p=1;就是错误的。,20,【例2.4】指向常量的指针用法示例 #include using namespace std; void main( ) int x=5; int y=6; const int * p= ,2.2.2 const修饰符与指针的结合,程序的运行结果为: x=5 y=6 *p=5 x=10 y=6 *p=10 x=10 y=6 *p=6,const int x=5; /这样修改后程序还正确吗?,21,2、常指针 定义形式:类型名* const 指针名=地

14、址值; 例如:int x=5; int * const p= 含义:指针p本身是常量,因此p第一次获得地址值只能通过初始化方式 ,但是*p是变量,可以被改变 修改上面的例2.4,得到程序:,2.2.2 const修饰符与指针的结合,22,/修改例2.4,常指针示例 #include using namespace std; void main( ) int x=5; int y=6; int * const p= ,2.2.2 const修饰符与指针的结合,程序的运行结果为: x=5 y=6 *p=5 x=10 y=6 *p=10 x=20 y=6 *p=20,23,3、指向常量的常指针 定义

15、形式:const 类型名 * const 指针名=地址值; 例如:int x=5; const int * const p= 含义:指针p本身是常量,p指向的内容即*p也不能直接修改,因此p第一次获得地址值只能通过初始化方式,程序中对p和*p均不可修改。,2.2.2 const修饰符与指针的结合,24,/修改例2.4,指向常量的常指针示例 #include using namespace std; void main( ) int x=5; int y=6; const int * const p= ,2.2.2 const修饰符与指针的结合,程序的运行结果为: x=5 y=6 *p=5 x=10 y=6 *p=10 x=10 y=6 *p=10,25,const修饰符与指针结合在一起,最常见的一种用法:当用指针做形式参数时,通过加const限制,保护对应的实在参数,以防止在函数中通过指针修改了实在参数的值。 例:double Sum( const double *p); 主函数中有double score20;一维数组表示学生成绩,则调用:sum(score);时不可能修改score中的任何元素值。 const还可与引用、类的成员结合在一起使用,更加灵活安全,后续章节将介绍,2.2.2 const修饰符与指针的结合,返回,26,C+语言新增加了bool和string数据类型

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

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

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