您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++面向对象程序设计-谭浩强-完整版
1/391C++面向对象程序设计谭浩强编著目录第1篇基本知识........................................................................................2第1章C++的初步知识.................................................................................2第2章数据类型与表达式............................................................................8第2篇面向过程的程序设计........................................................................22第3章程序设计初步..................................................................................23第4章函数与预处理................................................................................134第5章数组................................................................................................167第6章指针................................................................................................187第7章自定义数据类型..............................................................................225第3篇基于对象的程序设计........................................................................248第8章类和对象..........................................................................................248第9章关于类和对象的进一步讨论..........................................................267第10章运算符重载..................................................................................297第4篇面向对象的程序设计......................................................................317第11章继承与派生....................................................................................317第12章多态性与虚函数............................................................................342第13章输入输出流....................................................................................354第14章C++工具.........................................................................................3762/391第1篇基本知识第1章C++的初步知识*1.1从C到C++*1.2最简单的C++程序1.3C++程序的构成和书写形式1.4C++程序的编写和实现1.5关于C++上机实践*1.1从C到C++计算机诞生初期,人们要使用计算机必须用机器语言或汇编语言编写程序。世界上第一种计算机高级语言诞生于1954年,它是FORTRAN语言。先后出现了多种计算机高级语言。其中使用最广泛、影响最大的当推BASIC语言和C语言。BASIC语言是1964年在FORTRAN语言的基础上简化而成的,它是为初学者设计的小型高级语言。C语言是1972年由美国贝尔实验室的D.M.Ritchie研制成功的。它不是为初学者设计的,而是为计算机专业人员设计的。大多数系统软件和许多应用软件都是用C语言编写的。但是随着软件规模的增大,用C语言编写程序渐渐显得有些吃力了。C++是由AT&TBell(贝尔)实验室的BjarneStroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的。C++保留了C语言原有的所有优点,增加了面向对象的机制。C++是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C++。从C++的名字可以看出它是C的超集。C++既可用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。C++对C的“增强”,表现在两个方面:(1)在原来面向过程的机制基础上,对C语言的功能做了不少扩充。(2)增加了面向对象的机制。面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率。不要把面向对象和面向过程对立起来,面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。学习C++,既要会利用C++进行面向过程的结构化程序设计,也要会利用C++进行面向对象的程序设计。本书既介绍C++在面向过程程序设计中的应用,也介绍C++在面向对象程序设计中的应用。*1.2最简单的C++程序例1.1输出一行字符:“ThisisaC++program.”。程序如下:#includeiostream//包含头文件iostreamusingnamespacestd;//使用命名空间stdintmain(){cout″ThisisaC++program.″;return0;}在运行时会在屏幕上输出以下一行信息:ThisisaC++program.用main代表“主函数”的名字。每一个C++程序都必须有一个main函数。main前面的int的作用是声明函数3/391的类型为整型。程序第6行的作用是向操作系统返回一个零值。如果程序不能正常执行,则会自动向操作系统返回一个非零值,一般为-1。函数体是由大括号{}括起来的。本例中主函数内只有一个以cout开头的语句。注意C++所有语句最后都应当有一个分号。再看程序的第1行“#includeiostream”,这不是C++的语句,而是C++的一个预处理命令,它以“#”开头以与C++语句相区别,行的末尾没有分号。#includeiostream是一个“包含命令”,它的作用是将文件iostream的内容包含到该命令所在的程序文件中,代替该命令行。文件iostream的作用是向程序提供输入或输出时所需要的一些信息。iostream是i-o-stream3个词的组合,从它的形式就可以知道它代表“输入输出流”的意思,由于这类文件都放在程序单元的开头,所以称为“头文件”(headfile)。在程序进行编译时,先对所有的预处理命令进行处理,将头文件的具体内容代替#include命令行,然后再对该程序单元进行整体编译。程序的第2行“usingnamespacestd;”的意思是“使用命名空间std”。C++标准库中的类和函数是在命名空间std中声明的,因此程序中如果需要用到C++标准库(此时就需要用#include命令行),就需要用“usingnamespacestd;”作声明,表示要用到命名空间std中的内容。在初学C++时,对本程序中的第1,2行可以不必深究,只需知道:如果程序有输入或输出时,必须使用“#includeiostream”命令以提供必要的信息,同时要用“usingnamespacestd;”,使程序能够使用这些信息,否则程序编译时将出错。例1.2求a和b两个数之和。可以写出以下程序://求两数之和(本行是注释行)#includeiostream//预处理命令usingnamespacestd;//使用命名空间stdintmain()//主函数首部{//函数体开始inta,b,sum;//定义变量cinab;//输入语句sum=a+b;//赋值语句cout″a+b=″sumendl;//输出语句return0;//如程序正常结束,向操作系统返回一个零值}//函数结束本程序的作用是求两个整数a和b之和sum。第1行“//求两数之和”是一个注释行,C++规定在一行中如果出现“//”,则从它开始到本行末尾之间的全部内容都作为注释。如果在运行时从键盘输入123456↙则输出为a+b=579例1.3给两个数x和y,求两数中的大者。在本例中包含两个函数。#includeiostream//预处理命令usingnamespacestd;intmax(intx,inty)//定义max函数,函数值为整型,形式参数x,y为整型{//max函数体开始intz;//变量声明,定义本函数中用到的变量z为整型if(xy)z=x;//if语句,如果xy,则将x的值赋给zelsez=y;//否则,将y的值赋给zreturn(z);//将z的值返回,通过max带回调用处}//max函数结束4/391intmain()//主函数{//主函数体开始inta,b,m;//变量声明cinab;//输入变量a和b的值m=max(a,b);//调用max函数,将得到的值赋给mcout″max=″m′\\n′;//输出大数m的值return0;//如程序正常结束,向操作系统返回一个零值}//主函数结束本程序包括两个函数:主函数main和被调用的函数max。程序运行情况如下:1825↙(输入18和25给a和b)max=25(输出m的值)注意输入的两个数据间用一个或多个空格间隔,不能以逗号或其他符号间隔。在上面的程序中,max函数出现在main函数之前,因此在main函数中调用max函数时,编译系统能识别max是已定义的函数名。如果把两个函数的位置对换一下,即先写main函数,后写max函数,这时在编译main函数遇到max时,编译系统无法知道max代表什么含义,因而无法编译,按出错处理。为了解决这个问题,在主函数中需要对被调用函数作声明。上面的程序可以改写如下:#includeiostreamusingnamespacestd;intmain(){intmax(intx,inty);//对max函数作声明inta,b,c;cinab;c=max(a,b);//调用max函数cout″max=″cendl;return0;}intmax(intx,inty)//定义max函数{intz;if(xy)z=x;elsez=y;return(z);}只要在被调用函数的首部的末尾加一个分号,就成为对该函数的函数声明。函数声明的位置应当在函数调用之前。下面举一个包含类(class)和对象(object)的C++程序,目的是使读者初步了解C++是怎样体现面向对象程序设计方法的。例1.4包含类的C++程序。#includeiostream//预处理命令usingnamespacestd;classStudent//声明一个类,类名为Student{private://以下为类中的私有部分intnum;//私有变量numintscore;//私有变量scorepublic://
本文标题:C++面向对象程序设计-谭浩强-完整版
链接地址:https://www.777doc.com/doc-3903284 .html