资源预览内容
第1页 / 共54页
第2页 / 共54页
第3页 / 共54页
第4页 / 共54页
第5页 / 共54页
第6页 / 共54页
第7页 / 共54页
第8页 / 共54页
第9页 / 共54页
第10页 / 共54页
亲,该文档总共54页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
14.1C+的特点14.2最简单的C+程序14.3C+的输入输出14.4函数的重载14.5带缺省参数的函数14.6变量的引用类型514.7内置函数14.8作用域运算符14.9动态分配/撤销内存的运算符new和delete14.10小结,第14章 C+对C的扩充,14.1 C+的特点C语言是结构化和模块化的语言,它是面向过程的。在处理较小规模的程序时,程序员用C语言较得心应手。但是当问题比较复杂、程序的规模比较大时,结构化程序设计方法就显出它的不足。C程序的设计者必须细致地设计程序中的每一个细节,准确地考虑到程序运行时每一时刻发生的事情,例如各个变量的值是如何变化的,什么时候应该进行哪些输入,在屏幕上应该输出什么等。这对程序员的要求是比较高的,如果面对的是一个复杂问题,程序员往往感到力不从心。当初提出结构化程序设计方法的目的是解决软件设计危机,但是这个目标并未完全实现。,为了解决软件设计危机,在20世纪80年代提出了面向对象的程序设计(Object-Oriented programming,简称OOP) ,在这种形势下,C+应运而生。C+是由贝尔实验室的Bjarne Stroustrup博士及其同事在C语言的基础上开发成功的。C+保留了C语言原有的所有优点,增加了面向对象的机制。C+与C完全兼容,用C语言写的程序可以不加修改地用于C+。从C+名字可以看出它是对C的扩充,是C的超集。它既可以用于结构化程序设计,又可用于面向对象的程序设计,因此它是一个功能强大的混合型的程序设计语言。,使用C+必须事先安装C+编译系统,在DOS系统下可以使用Turbo C+或Borland C+。C源程序的后缀一般为.c,而C+的后缀一般为.cpp(为C plus plus的缩写,即C+)。在Borland C+开发环境中,既可以使用C语言,也可以使用C+语言。它有两个编译系统,根据源程序文件名的后缀是.c还是.cpp来决定使用哪个编译系统。,如上所述,面向对象程序设计方法主要是解决大型软件的设计问题。只有编写过大型程序的人才会体会到C的不足和C+的优点。C+是一种大型语言,其功能、概念和语法规定都比较复杂,要深入掌握它需要花较多的时间,尤其是需要有较丰富的实践经验。用C+编程的主要是软件专业人员。学校里一般专业的程序设计课程任务主要是进行程序设计的基本训练,因此,我们认为当前对大多数学生来说,应先掌握好C语言程序设计。有了C语言的基础在需要时再学习C+不会太困难。为了使读者对C+有初步的了解,以便为今后学习C+打下基础,我们在进行本书的修订时特地增加了第14章和第15章,介绍C+的初步知识。,C+对C的“增强”,表现在两个方面:(1) 在原来面向过程的机制基础上,对C语言的功能做了不少扩充。(2) 增加了面向对象的机制。本章介绍C+对C功能的扩充。第15章介绍有关面向对象的内容。,14.2 最简单的C+程序例14.1 输出一行字符。#include #include /* 本程序的作用是输出一行字符 */void main( ) printf(This is a c+ program. n); cout This is a c+ program. n ; /本行输出一行字符 本程序和以前见过的C程序有什么不同?,(1) 在C+程序中一般习惯在主函数main前面加了一个类型声明符void,表示main函数没有返回值。(2) 除了可以用 /*/ 形式的注释行外,还允许使用以/ 开头的注释。从程序最后一行中可以看到:以/开头的注释可以不单独占一行,它出现在语句之后。编译系统将/ 以后到本行末尾的所有字符都作为注释。应注意:它是单行注释,不能跨行。C+的程序设计人员多愿意用这种注释方式,它比较灵活方便。(3) 除了可以用printf函数输出信息外,还可以用cout进行输出。cout要与运算符配合使用,程序中cout的作用是将运算符右侧的内容送到输出设备中输出。,(4) 使用cout需要用到头文件iostream.h,在程序的第一行用#include命令将该头文件“包含”进来。程序运行时输出:This is a c+ program.This is a c+ program.可以看到程序中最后两个语句的作用相同,都是输出This is a c+ program.。,14.3 C+的输入输出 在C语言中文件不是由记录构成的。对文件的存取是以字节为单位的,对一个C文件的输入和输出是一个字节流。输入和输出的数据流的开始和结束只受程序控制而不受物理符号(如回车换行符)的控制。这种文件称为流式文件。在输入操作中,字节从输入设备流向内存,在输出操作中,字节从内存流向输出设备。C+为了方便使用,除了可以利用printf和scanf函数进行输出和输入外,还增加了标准输入输出流cout和cin。cout是由c和out两个单词组成的,代表C+的输出流,cin是由c和in两个单词组成的,代表C+的输入流。它们是在头文件iostream.h中定义的。在键盘和显示器上的输入输出称为标准输入输出,标准流是不需要打开和关闭文件即可直接操作的流式文件。,C+预定义的标准流如表14.1所示。表14.1,14.3.1 用cout进行输出cout必须和输出运算符一起使用。 在这里不作为位运算的左移运算符,而是起插入的作用,例如:coutHello!n;的作用是将字符串“Hello!n” 插入到输出流cout中,也就是输出在标准输出设备上。也可以不用n控制换行,在头文件iostream.h中定义了控制符endl代表回车换行操作,作用与n相同。endl的含义是end of line,表示结束一行。可以在一个输出语句中使用多个运算符 将多个输出项插入到输出流cout中,运算符的结合方向为自左向右,因此各输出项按自左向右顺序插入到输出流中。例如:,for (i=1; i=3;i+)coutcount=iendl;输出结果为:count=1count=2count= 3注意:每输出一项要用一个 符号。不能写成 couta,b,c,A; 形式。用cout和 可以输出任何类型的数据,如:float a=3.45;int b=5;char c=A;couta=a,b=b,c=cendl;,输出结果为a=3.45,b=5,c=A可以看到在输出时并未指定数据的类型(如实型、整型),系统会自动按数据的类型进行输出。这比用printf函数方便,在printf函数中要指定输出格式符(如%d,%f,%c等)。如果要指定输出所占的列数,可以用控制符setw设置(注意:若使用setw,必须包含头文件 iomanip.h),如setw(5) 的作用是为其后面一个输出项预留5列,如输出项的长度不足5列则数据向右对齐,若超过5列则按实际长度输出。如将上面的输出语句改为:couta=setw(6)aendlb=setw(6)bendlc=setw(6)cendl;,输出结果为a=3.45b=5c=A在C+中将数据送到输出流称为“插入”(inserting) ,或“放到”(putting) 。 运算符从输入设备键盘取得数据送到输入流cin中,然后送到内存。在C+中,这种输入操作称为“提取”(extracting) 或“得到”(getting) 。 常称为“提取运算符”。cin要与 配合使用。例如:int a;float b;cinab; /输入一个整数和一个实数。注意不要写成cina,b;可以从键盘输入:20 32.45 (数据间以空格分隔),a和b分别获得值20和32.45。用cin和 输入数据同样不需要在本语句中指定数据类型(用scanf函数输入时要根据数据类型指定输入格式符,如%d,%c等)。例14.2 cin与cout一起使用。#include void main( )coutname; cinage; coutyour name is nameendl; coutyour age is age。 这两个运算符本来是左移运算符和右移运算符,现在把它作为输入输出运算符。即允许一个运算符用于不同场合,有不同的含义,这就叫运算符的“重载”(overloading),即重新赋予它新的含义。其实就是“一物多用”。函数也可以重载。用C语言编程时,有时会发现有几个不同名的函数,实现的是同一类的操作。例如要求从3个数中找出其中最大者,而这3个数的类型事先不确定,可以是整数、实数或长整数。程序设计者必须分别设计出3个函数,其原型为:,int max1(int a, int b, int c); (求3个整数中的最大者)float max2(float a, float b, float c); (求3个实数中的最大者)long max3(long a, long b, long c); (求3个长整数中的最大者)C语言规定在同一作用域(如同一文件模块中)中不能有同名的函数,因此3个函数的名字不相同。C+允许在同一作用域中用同一函数名定义多个函数,这些函数的参数个数和参数类型不同。这就是函数的重载,即一个函数名多用。对上面的问题可以编写如下的C+程序。例14.3 求3个数中最大的数(分别考虑整数、实数、长整数的情况)。,#include int max(int a, int b, int c) /求3个整数中的最大者 if (ba) a=b; if (ca) a=c; return a; float max(float a,float b, float c) /求3个实数中的最大者 if (ba) a=b; if (ca) a=c; return a; long max(long a,long b,long c) /求3个长整数中的最大者 if (ba) a=b; if (ca) a=c; return a; void main( )int a,b,c; float d,e,f; long g,h,i; cinabc; cindef; cinghi; int m; m= max(a,b,c); /函数值为整型 cout max-i=mendl; float n; n=max(d,e,f); /函数值为实型,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号