C++面向对象程序设计(谭浩强版).ppt
- 文档编号:3179837
- 上传时间:2022-11-19
- 格式:PPT
- 页数:800
- 大小:5.89MB
C++面向对象程序设计(谭浩强版).ppt
《C++面向对象程序设计(谭浩强版).ppt》由会员分享,可在线阅读,更多相关《C++面向对象程序设计(谭浩强版).ppt(800页珍藏版)》请在冰豆网上搜索。
C+面向对象程序设计面向对象程序设计第一讲第一章C+的初步知识第二章类和对象第三章关于类和对象的进一步讨论第四章运算符重载第五章继承与派生第六章多态性与虚函数第七章输入输出流结束放映结束放映第一章C+的初步知识1.1从C到C+1.2C+语言的词法和词法规则1.3最简单的C+程序1.4C+对C的扩充1.5C+程序的编写和实现1.1从C到C+C语言是结构化和模块化的语言,C程序的设计者必须细致地设计程序中的每个细节,准确地考虑程序运行时每一时刻发生的事情,当程序规模变大时,结构化程序设计就显得力不从心。
为了解决软件设计危机,在20世纪80年代提出了面向对象的程序设计思想(OOP)在实践中人们发现C语言使用如此广泛,如果在它的基础上发展一种面向对象的语言,一定会让大众容易接收这种语言,所以产生了C+。
AT&T发布的第一个C+编译系统是一个预编译器,它把C+代码转换成C代码,然后再用C编译系统生成目标代码。
1988产生第一个C+编译系统1989C+2.0类的多重继承1991C+3.0类的模板C+4.0异常处理、命名空间1997ANSI发布C+标准C+既可以用于面向过程的结构化程序设计,也可用于面向对象的程序设计。
C+对C的增强体现在两个方面:
1.对原来的面向过程机制做了扩充。
2.增加了面向对象的机制。
学习C+之后,既可以进行面向对象的程序设计,也可以进行面向过程的程序设计。
1.2C+语言的词法和词法规则C+语言的字符集语言的字符集等同于C语言的字符集,包括:
(1)大小写英文字母
(2)数字字符(3)其他ASCII码字符(除除、$外外)。
单词及词法规则单词及词法规则单词是构成语句的关键成份之一,通常由若干字符组成,C+有几种单词:
1.关键字2.标识符3.运算符4.分隔符5.注释符。
关键字关键字是C+语言中的命令字,它是预定义好的单词,C+编译程序对其有专门的解释。
int、float、if、else、while、switch等等。
标识符标识符程序员用标识符对程序中元素实施命名,包括函数名、类名、对象名、类型名、变量名、常变量名、数组名等。
标识符以字母或下划线开始,后跟字母、数字、下划线,标识符区分大小写字母标识符区分大小写字母。
运算符运算符运算符代表某种操作的单词,由一个或多个字符组成。
注意运算符的优先级和结合顺序。
参考本书附录B(P287)。
分隔符分隔符在语句中关键字和标识符之间、各个语句之间要用分隔符分开。
C+常用的分隔符有空格、逗号、分号、冒号、大括号。
注释符注释符C+提供了两种注释符。
/*注释*/注释1.3最简单的C+程序例1.1输出一行字符“ThisisaC+program.”。
#include/用用cout输出时需要用输出时需要用/此头文件此头文件usingnamespacestd;/使用命名空间使用命名空间stdintmain()coutThisisaC+program.n;/上面用上面用C+的方法输出一行的方法输出一行return0;
(1)标准C+规定main函数必须声明为int类型,如果程序正常运行,向操作系统返回一个零值,否则返回非零值,通常是-1。
(2)C+程序中可以用/*/做注释,可以用/做注释。
前者可以做多行注释,后者只做单行注释。
(3)C+程序中常用cout、cin进行输出输入,cout是C+定义的输出流对象,是插入运算符。
(4)使用cout、cin需要用头文件iostream,在程序开始要用#include声明包含的头文件。
(5)usingnamespacestd;意思是使用命名空间。
C+标准库中的类和函数是在命名空间std中声明的,因此程序中如用C+标准库中的有关内容(此时需要用#include命令行),就要用usingnamespacestd;语句声明。
例1.2求a和b两个数之和/求两数之和求两数之和#include/预处理命令usingnamespacestd;/使用命名空间stdintmain()/主函数首部/函数体开始inta,b,sum;/定义变量cinab;/输入语句sum=a+b;/赋值语句couta+b=sum”是提取运算符,与cin配合,其作用是从输入设备中提取数据送到输入流cin中。
在程序执行时,键盘输入的第一个数据赋予a,第二个数据赋予b。
cout语句中的endl是C+控制符常数,作用是让光标换行。
如果在本程序运行时输入:
123456程序则输出:
a+b=579例1.3求两个数中的大数#includeusingnamespacestd;intmain()intmax(intx,inty);/对max函数作声明inta,b,c;cinab;c=max(a,b);/调用max函数coutmax=cy)z=x;elsez=y;return(z);本程序包含两个函数,主函数main和被调用的函数max。
max函数的作用是将两个整数中的大数赋予变量z。
return语句将z的值返回给主函数main。
返回值是通过函数名max带回到main函数的调用处。
程序运行情况如下:
1825(输入18和25)max=25(输出最大值25)第二讲例1.4包含类的C+程序#includeusingnamespacestd;classStudent/声明一个类,类名为Studentprivate:
/以下为类中的私有部分intnum;/私有变量numintscore;/私有变量scorepublic:
/以下为类中公用部分voidsetdata()/定义公用函数setdatacinnum;/输入num的值cinscore;/输入score的值voiddisplay()/定义公用函数displaycoutnum=numendl;/输出num的值coutscore=scoreendl;/输出score的值;/类的声明结束Studentstud1,stud2;/定义stud1和stud2为Student类的变量,称为对象intmain()/主函数首部stud1.setdata();/调用对象stud1的setdata函数stud2.setdata();/调用对象stud2的setdata函数stud1.display();/调用对象stud1的display函数stud2.display();/调用对象stud1的display函数return0;程序中声明一个被称为类的类型Student。
声明时要用关键字class。
C+类中可以包含两种成员即数据(如变量num、score)和函数(如setdata函数和display函数)。
分别称为数据成员和成员函数。
在C+中将一组数据和访问这组数据的函数封装在一起,组成类。
一个类是由一组数据,一组对其访问的若干函数,以及数据和函数的访问属性组成的。
在前面程序中看到的private(私有)public(公有)保留字代表数据和函数的访问属性。
凡是指定为公有的数据和函数,既可由本类的函数访问和调用,也可由其他函数或语句访问和调用;凡是指定为私有的数据和函数,通常只能由本类的函数访问和调用。
程序中“Studentstud1,stud2;”是一个定义语句,定义两个Student类型变量stud1和stud2,Student类与int一样是C+的合法类型。
具有类类型的变量称为对象。
Student的对象stud1,stud2具有同样的结构和特征。
在类外调用成员函数时必须在函数名前冠以类的名称。
主函数中第一条语句输入学生1的学号和成绩,第二条语句输入学生2的学号和成绩,第三条语句输出学生1的学号和成绩,第四条语句输出学生2的学号和成绩。
程序运行情况如下:
100198.5100276.5num=1001Score=98.5num=1002Score=76.5为了与C兼容,C+保留了C语言中的一些规定,例如头文件的文件名,以C语言里头文件的扩展名是.h,许多C+编译系统保留了这种扩展名,近年推出的C+编译系统新版本,推出了一批不带扩展名的头文件如iostream,string,cmath等。
为了兼容C+仍允许使用带扩展名的头文件。
由于C语言无命名空间,因此使用带扩展名的头文件时不用usingnamespacestd。
1.3C+对C的扩充C+既可用于面向过程的程序设计,也可用于面向对象程序设计。
C+继承了C语言提供的绝大部分功能和语法规定,并在此基础上作了扩充。
1.4.1C+的输入和输出1.4.2用const定义常变量1.4.3函数原型声明1.4.4函数的重载1.4.5函数模板1.4.6有默认参数的函数1.4.7变量的引用1.4.8内置函数1.4.9作用域运算符1.4.10字符串变量1.4.11动态分配/回收内存运算符1.3.1C+的输入输出C+为了方便使用,除了可以利用printf和scanf函数进行输入和输出外,还增加了标准输入流输出流cin和cout。
它们是在头文件iostream中定义的,标准流是不需要打开文件和关闭文件就能直接操作的流式文件,在此标准输入流是指从键盘上输入的数据,标准输出流是指向屏幕输出的数据流。
C+预定义的标准流如表1.2所示。
1.用cout进行输出格式:
cout表达式1表达式2功能:
由左向右逐个计算表达式的值,将其插入到输出流cout中。
cout必须与输出运算符一起使用,每个后跟一个表达式,运算符的结合方向是从左向右,所以各个表达式的值按从左到右的顺序插入到输出流中。
For(k=1;k=3;k+)cout“k=“kendlendl是C+输出流的常数,在头文件iostream中定义,代表让光标换行。
在C+中也可以用”n”控制光标换行。
所以输出语句也可写成:
cout“k=“k变量1变量2是C+的提取运算符,表示从标准输入设备取得数据,赋予其后的变量。
从键盘输入数值数据时,两个数据之间用空格分隔或用回车分隔。
inta;floatbcinab;从键盘输入2032.45例1.5cin和cout的使用#includeusingnamespacestd;intmain()coutpleaseenteryournameandage:
name;cinage;coutyournameisnameendl;coutyourageisageendl;return0;1.3.2用const定义常变量格式:
const类型变量名=常数例:
constfloatPI=3.14159;1.3.3函数原型声明C+规定,如果函数调用在函数定义之前,要求在调用之前声明该函数的原型。
格式:
函数类型函数名(形参表);形参表中形参可以只写类型。
例:
intmax(intx,inty);或intmax(int,int);其实C+编译时,只检查参数的数据类型。
1.3.4函数的重载C+允许在同一个域中用一个函数名定义多个函数,这些函数的参数个数、参数类型不相同。
用一个函数名实现不同的功能,用一个函数名实现不同的功能,就是函数的重载就是函数的重载。
例1.6设计程序计算三个数中的大数#includeusingnamespacestd;intmax(inta,intb,intc)/求求3个整数中的最大者个整数中的最大者if(ba)a=b;if(ca)a=c;returna;floatmax(floata,floatb,floatc)/求求3个实数中的最大者个实数中的最大者if(ba)a=b;if(ca)a=c;returna;longmax(longa,longb,longc)/求求3个长整数中的最大者个长整数中的最大者if(ba)a=b;if(ca)a=c;returna;intmain()inta,b,c;floatd,e,f;longg,h,i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 谭浩强版