C++程序设计全套教学课件PPT.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C++程序设计全套教学课件PPT.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 全套 教学 课件 PPT
- 资源描述:
-
1、C+程序设计第1章 C+初步本章主要内容 数据类型不同 动态内存分配机制不同 输入输出机制 函数不同 常变量 面向过程与面向对象思想的区别1.1数据类型不同 C+语言的基本数据类型与C语言一致,可以在C+中直接应用。不同之处:C语言整型占2个字节,而C+中基本整型占4个字节。C语言指针类型占2个字节,而C+中指针类型占4个字节。C+中结构体类型 类型名省略关键字struct1.2 动态内存分配机制不同 C语言利用动态内存分配函数 malloc()calloc()free()C+利用动态分配和撤销内存的运算符 new和delete 注意:new和delete是运算符,不是函数,执行效率高。new
2、和delete运算符 new运算符使用的一般格式 new 类型初值;例如:new int;new int(100);new char10;float*p=new float(3.14);delete运算符使用的一般格式 delete 指针变量;例如:delete p;delete pt;1.3 C与C+不同的输入输出机制 C+中输入输出流的基本概念 使用输出流对象cout的基本方法和格式 使用输入流对象cin的基本方法和格式C+中输入输出流的基本概念 C+中通过调用输入输出流库中的流对象cin和cout实现输入输出。cout是输出流对象的名字,cin是输入流对象的名字 是流提取运算符,作用是从
3、默认的输入设备的输入流中提取若干字节送到内存区中指定变量。C+中输入输出流的基本操作 使用cin,cout和流运算符必须包含头文件#include cout语句的一般格式为 cout表达式1表达式2变量1变量2变量n;注意:不能使用cin语句输入空格和回车字符 必须输入时使用getchar()函数输入1.4 C与C+函数不同 内联函数 函数重载 带默认参数的函数 引用和引用做函数参数一内联函数 编译时将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。这种嵌入到主调函数中的函数称为内联函数。指定内联函数,在函数首行的左端加关键字inline即可。内联函数中不能包含复杂的控制语句,如循环
4、语句等。#includeinline int max(int a,int b,int c);int main()int i=10,j=20,k=30,m;m=max(i,j,k);coutmax=ma)a=b;if(ca)a=c;return a;二函数重载 C+允许用同一函数名定义多个函数,这些函数的参数类型或者参数个数不同,这就是函数的重载。重载函数的参数个数,参数类型,或参数顺序3者中必须至少有一种不同,函数返回值类型可以相同也可以不同。所谓重载就是“一物多用”,不仅函数可以重载,运算符可以重载。#includeint max(int a,int b,int c);int max(int
5、 a,int b);int main()int a=8,b=20,c=30;coutmax(a,b,c)=max(a,b,c)endl;coutmax(a,b)=max(a,b)a)a=b;if(ca)a=c;return a;int max(int a,int b)if(ab)return a;else return b;三带默认参数的函数 当用同样实参多次调用同一函数时,C+中可以给形参一个默认值,这样形参就不必一定从实参取值了。例如:函数声明 float area(float r=6.5);则函数调用 area();area(7.5);必须在函数调用之前将默认值的信息通知编译系统三带默认
6、参数的函数 实参与形参结合是从左至右。因此指定默认值的参数必须放在形参表列最右端。例如:void f1(float a,int b=0,int c)?void f2(float a,int b,int c=0)一个函数不能既作为函数重载,有作为有默认参数的函数,否则产生二义性。例如:有函数声明int max(int a,int b,int c=10);int max(int a,int b);函数调用max(5,23);调用哪个函数?#includeint max(int a,int b,int c=0);int main()int a,b,c;cinabc;coutmax(a,b,c)=ma
7、x(a,b,c)endl;coutmax(a,b)=max(a,b)a)a=b;if(ca)a=c;return a;四引用 引用的作用是为变量起一个别名。例如:int a;int&b=a;说明b是a的引用,即b是a的别名。b和a占内存中的同一个存储单元。在声明一个引用时,必须同时使之初始化,即声明它代表的变量,不能在作为其他变量的引用。例如:int a1=3,a2=5;int&b=a1;int&b=a2;/正确吗?#include#includeint main()int a=10;int&b=a;a=a*a;coutasetw(6)bendl;b=b/5;coutb setw(6)aend
8、l;return 0;例.引用和变量的关系引用做函数参数 C+引入引用的主要用途是传递函数参数,以扩充函数传递数据的功能。目前我们学习的参数传递方法有三种 变量名做参数 传递变量指针 传递变量的别名#includevoid swap(int&,int&);int main()int i=3,j=5;swap(i,j);couti=ij=jendl;return 0;void swap(int&a,int&b)int temp;temp=a;a=b;b=temp;例.利用“引用形参”实现两个变量值的互换1.5 C+中与常变量相关的概念 常变量概念和特点 常变量作函数参数 指向常变量的指针变量一常
9、变量概念和特点 定义变量时,加上关键字const,则变量的值在程序运行期间不能改变,称为常变量 例如:const int a=3;定义常变量时必须同时对其初始化 例如:const int a;a=3;/错误,常变量不能被赋值二常变量作函数参数 用const限制函数的参数能保证函数不对参数做任何修改 针对指针和引用参数,可以避免实参被意外修改int f(int i1,const int i2)i1+;i2+;/正确吗?return i1+i2;三指向常变量的指针变量 定义指向常变量指针变量的一般形式:const 类型名 *指针变量名;例如:const char*ptr;常变量只能用指向常变量的指
10、针变量指向,不能用一般的指针变量指向 例如:const char c=“boy”;const char*p1;p1=c;char*p2=c;/正确吗?指向常变量的指针变量 指向常变量的指针变量还可以指向非const 的变量,此时不能通过指针变量改变该变量的值。例如:char c1=a;const char*p;p=&c1;*p=b;/?如果函数形参是指向const型的指针变量,在函数执行过程中不能改变指针变量所指向的变量的值。1.6面向过程与面向对象思想的区别例如:求三角形周长和面积例.利用面向过程思想求三角形周长和面积#includestdio.h#includemath.hfloat mi
11、anji(float a,float b,float c)float s,area;s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c);return(area);float zhouchang(float a,float b,float c)return(a+b+c);void main()float a,b,c,m,z;scanf(%f,%f,%f,&a,&b,&c);m=mianji(a,b,c);z=zhouchang(a,b,c);printf(%f,%f,m,z);1.面向过程编程思想将数据和处理数据的过程分离为相互独立的实体,当数据结构发生改变时
12、,所有的相关处理过程都要发生改变。结构化程序设计的基本思想:自顶向下、逐步求精,其程序结构按照功能划分为若干基本模块,形成一个树状结构;每个模块内部均是由顺序、选择、循环三种基本结构组成;其模块实现的基本方法是子程序(函数)。程序=数据结构+算法例.利用面向对象思想求三角形周长和面积#include#includemath.husing namespace std;class trangle public:trangle(float x,float y,float z)a=x;b=y;c=z;float zhouchang()return a+b+c;float mianji()return(
13、sqrt(a+b+c)/2.0)*(a+b+c)/2.0)-a)*(a+b+c)/2.0)-b)*(a+b+c)/2.0)-c);private:float a,b,c;int main()trangle t1(3,4,5),t2(6,8,12);coutt1.zhouchang()endlt2.mianji()实数的加法 -复数的加法实验一 C+初步 实验目的:C+流输入输出 C+中函数的基本概念 实验内容 利用函数重载求任意二个数中的大数。利用引用做函数参数对3个变量按由小到大的顺序排序 利用函数默认参数求3个数最大值,验证定义默认参数和函数重载后果。C+程序设计第2章 类与对象本章主要内
14、容 结构体与类 类的定义方法 C+类成员的访问属性 类和对象的简单应用举例 构造函数与析构函数 对象指针类的概念:C+中的类就是一种用户自定义的数据类型,和其他数据类型不同的是,组成这种类型的不仅可以有数据,而且可以有对数据进行操作的函数,它们分别叫做类的数据成员和类的函数成员。定义性说明和引用性说明,定义性说明就是定义类,说明了类的成员。而引用性说明就是只说明了类名,留待后面的代码对这个类加以定义。2.1类的声明和对象的定义一、结构体与类 结构体struct Studentint num;char name20;float score3;;C+中允许用中允许用struct来定义一来定义一个个
15、类类类型类型Student 是一个是一个合法的合法的类类类型类型一个完整的类定义包括关键字class 类名 类体 在类体中定义类的属性(类中的数据成员的取值范围)和操作(类中的成员函数名)。class 类名 public:若干成员;protected:若干成员;private:若干成员;二、类的定义类成员访问限定符 public的成员:一般是成员函数,用于定义类的外部接口,在程序中的任何部分都可访问。private的成员:一般是数据成员,用于描述类的属性,它们只能被类自身的成员函数访问,类的成员默认情况下是私有的。protected的成员:不能被类外访问,但可被派生类的成员函数访问。注意:关键
16、字 private public protected的出现顺序是任意的,并且可以不出现或出现多次。但类中的每个成员只能有一种特定的访问属性Class Cylinder public:void setcylinder(double r,double h);double getradius();double getheight();double volume();double surface_area();private:double radius;double height;注:在类内不允许对声明的数据成员进行初始化举例类是用户定义的一种类型,在程序中我们根据该类的类型说明一个变量,那么这个变量
17、就是一个对象,它是具体的,在内存中对象被分配相应的内存,它是以类作为样板生成的。事实上建立对象时,只有每个对象的数据是分别占用内存的,而操作这些数据的代码(函数)只有一份,由各对象共享,这是编译器实现对象的一种方法而已,我们仍应理解为一个对象是独立的由数据和代码组成。三、类和对象的定义 与一般变量相同,对象也必须经过声明后才能使用,声明类的对象如下:类名 对象名;例如:Cylinder cylinder1,cylinder2;Cylinder cylinder10;对象的声明:定义类的成员函数的实现的一般形式为:返回类型 类名:成员函数名(参数说明)函数体“:”是作用域运算符,它标明所要定义的
18、函数属于哪个类注:1、如果函数体的定义放在类的声明内,这样定义的函 数自动成为内联函数 2、如果在类外定义一个类的内联成员函数,应该在函 数类型之前用关键字inline进行说明 四、类的成员函数的定义 void Cylinder:setcylinder(double r,double h)radius=r;height=h;double Cylinder:getradius()return radius;double Cylinder:getheight()return height;double Cylinder:volume()double vol;vol=3.1415926*radius
19、*radius*height;return vol;例2.12.2 C+类成员的访问控制 引用方式 (1)对象名.数据成员名、对象名.成员函数名(参数表)(2)指向该类对象的指针-成员名 (3)对象的引用.成员名 在C+中,数据封装是通过类来实现的。由于类中成员指定了访问权限,所以程序中其他函数就不能访问对象的私有成员,只能通过公有成员提供接口来访问 class A public:int x;setX(int a)x=a;getX()return x;A object;object.x=5;类的数据成员可以是类类型,也就是说类的声明中数据成员可以是另一个类的对象,但必须注意以下两点:这个对象不
20、能是本类的对象。作为数据成员的对象所属的类,应该在声明这个对象之前进行声明class A .;class B A a;.;2.3类和对象的简单应用举例例2.2求三个长方体的体积。编写一个基于对象的程序,数据成员包括length、width、height。要求用成员函数实现以下功能:由键盘分别输入三个长方体的长,宽,高;计算长方体的体积;输出长方体的体积;int rectangle:calculate()return(length*width*heigth);void rectangle:output()coutcalculate();int main()rectangle t1;t1.inpu
21、t();t1.calculate();t1.output();return 0;#include using namespace std;class rectangle public:void input();void output();int calculate();private:int length;int width;int heigth;void rectangle:input()cinlength;cinwidth;cinheigth;2.4构造函数与析构函数一、构造函数 对象的初始化 将确定对象的初始状态,即对其成员的初始值进行确定。类的数据成员不能在声明类时初始化 如果类中成员
22、全部是public,可在定义对象时对数据成员进行初始化 C+提供了构造函数(constructor)来处理对象的初始化问题构造函数举例例2.3void Time:show_time()couthour“:”minute“:”secendl;int main()Time t1;t1.set_time();t1.show_time();Time t2;t2.show_time();return 0;#include using namespace std;class Time public:Time()hour=0;minute=0;sec=0;void set_time();void show_
23、time();private:int hour;int minute;int sec;void Time:set_time()cinhour;cinminute;cinsec;1、构造函数的定义 构造函数的函数名必须与类名相同。是一个很特殊的成员函数,因此构造函数需要在类中说明(定义);构造函数没有返回值,也不需在定义时声明函数类型。构造函数的主要作用是完成对类对象的初始化工作。构造函数不能由编程人员显式的直接调用。在构造函数的函数体中不仅可以对数据成员赋初值,而且可以包含其他语句。在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化。2、带参数的构造函数 采用带参数的构造函
24、数,在调用不同对象的构造函数时,从外面将不同的数据传递给构造函数,以实现不同的初始化。构造函数首部的一般格式为 构造函数名(类型 1 形参1,类型2 形参2,)实参是在定义对象时给出的。定义对象的一般格式为 类名 对象名(实参1,实参2,);带参数的构造函数举例例2.4int Box:volume()return (height*width*length);int main()Box box1(12,25,30);coutthe volume of box1 is box1.volume()endl;Box box2(15,30,21);coutthe volume of box2 is bo
25、x2.volume()endl;return 0;#include using namespace std;class Box public:Box(int,int,int);int volume();private:int height;int width;int length;Box:Box(int h,int w,int len)height=h;width=w;length=len;3、用参数初始化表对数据成员初始化 C+还提供另一种初始化数据成员的方法参数初始化表来实现对数据成员的初始化。在原来函数首部的末尾加一个冒号,然后列出参数的初始化表 这种写法方便、简练,尤其当需要初始化的数
展开阅读全文