C面向对象程序设计谭浩强版PPT推荐.ppt
《C面向对象程序设计谭浩强版PPT推荐.ppt》由会员分享,可在线阅读,更多相关《C面向对象程序设计谭浩强版PPT推荐.ppt(800页珍藏版)》请在冰豆网上搜索。
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=sumendl;
/输出语句return0;
/如程序正常结束,返回一个零值,cin是C+定义的输入流对象。
”是提取运算符,与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=cendl;
return0;
intmax(intx,inty)/定义max函数intz;
if(xy)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“n”,2.用cin进行输入,格式:
cin变量1变量2是C+的提取运算符,表示从标准输入设备取得数据,赋予其后的变量。
从键盘输入数值数据时,两个数据之间用空格分隔或用回车分隔。
inta;
floatbcinab;
从键盘输入2032.45,例1.5cin和cout的使用,#includeusingnamespacestd;
intmain()coutname;
cinage;
coutyournameisnameendl;
coutyourageisageendl;
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;
longmax(longa,longb,longc)/求3个长整数中的最大者if(ba)a=b;
intmain()inta,b,c;
floatd,e,f;
longg,h,i;
cinabc;