[工学]C++第1章C++的初步知识.ppt_第1页
[工学]C++第1章C++的初步知识.ppt_第2页
[工学]C++第1章C++的初步知识.ppt_第3页
[工学]C++第1章C++的初步知识.ppt_第4页
[工学]C++第1章C++的初步知识.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+面向对象程序设计,三系:汤亮 tel第1章 C+的初步知识,1.1 从C到C+ 1.2 最简单的C+程序 1.3 C+对C的扩充 1.4 C+程序的编写和实现,1.1 从C到C+,为了解决软件危机,20世纪80年代提出了面向对象的程序设计思想,在这种形势下,C+应用而生。 带类的C语言 C+ 1988年 C+1.0 1989年 C+2.0 类的多重继承 1991年 C+3.0 增加了模板 C+4.0 增加了异常处理 1997年 ANSI C+ C+对C的增强,具体体现在: 在原来面向过程的机制基础上,对C语言的功能作了不少扩充 增加了面向对象的机制,1.2 最简单的C+程序,例1.1:输出一行字符:“This is a C+ program.” #include /用cout输出时需要用此头文件 using namespace std ; /使用命名空间std int main( ) cout“This is a C+ program.n“; /用C+的方法输出一行 return 0; ,关于程序的几点说明: int main( ):在C+程序中,一般在main函数前加int /:注释作用和/*/的作用一样,但两者又有区别 cout:用cout进行数据的输出 iostream:使用cout和cin时要用#include using namespace std:使用命名空间,使用#include 时就要用using namespace std,1.2 最简单的C+程序,1.2 最简单的C+程序,例1.2:求a和b两个数之和 / 求两数之和 (本行是注释行) #include /预处理命令 using namespace std; /使用命名空间std int main( ) /主函数首部 /函数体开始 int a,b,sum; /定义变量 cinab; /输入语句 sum=a+b; /赋值语句 cout“a+b=“sumendl; /输出语句 return 0; /如程序正常结束,向操作系统返回一个零值 ,1.3 C+对C的扩充,1.3.1C+的输入输出 1、用cout进行输出( #include using namespace std; int main( ) int a=5,b=10;char c1=A,c2=B; coutaendl; coutabendl; coutasetw(5)bendl; coutc1c2endl; coutc1+c2-65endl; coutchar(c1+c2-65)endl; return 0; ,2、用cin进行输入(:提取运算符) 例1.4 #include #include using namespace std; int main( ) int a,b,c;char c1,c2; cina; cinbc; cinc1c2; cout“a=“a“b=“b“c=“cendl; cout“c1=“c1“c2=“c2endl; return 0; ,1.3 C+对C的扩充,1.3 C+对C的扩充,1.3.2用const定义常变量 例1.5 #include using namespace std; #define PI 3.14 #define R a+b int main( ) int a,b;float area; cinab; area=PI*R*R; cout“面积为:“areaendl; return 0; ,1.3 C+对C的扩充,例1.6 #include using namespace std; int main( ) const float PI=3.14; int a,b;float area; cinab; area=PI*a*b; cout“面积为:“areaendl; return 0; ,1.3 C+对C的扩充,1.3.3函数原型声明 在C+中规定,如果函数调用的位置在函数定义之前,则要求在函数调用之前必须对所调用的函数作函数原型说明。函数原型说明的形式: 函数类型 函数名(函数参数列表); 如: int max(int a,int b); int max(int ,int );,1.3 C+对C的扩充,1.3.4函数的重载 例1.7用函数实现求2个整数或3个整数中的最大者 #include using namespace std; int max2(int a,int b)return ab?a:b; int max3(int a,int b,int c) int max;max=ab?a:b; max=maxc?max:c; return max; int main( ) int x,y;int m,n,s; cinxy; cinmns; cout“x,y中的较大者是:“max2(x,y)endl; cout“m,n,s中的最大值是:“max3(m,n,s)endl; return 0; ,1.3 C+对C的扩充,#include using namespace std; int max(int a,int b)return ab?a:b; int max(int a,int b,int c) int max; max=ab?a:b; max=maxc?max:c; return max; int main( ) int x,y; int m,n,s; cinxy; cinmns; cout“x,y中的较大者是:“max(x,y)endl; cout“m,n,s中的最大值是:“max(m,n,s)endl; return 0; ,1.3 C+对C的扩充,关于函数重载的说明: 只有当函数名相同,而函数的参数个数不同或参数的类型不同时才能实现函数的重载;但只有函数的返回值类型不同时是不能实现函数重载的。如: int max(int a); int max(int a,int b); int max(float a);/能实现重载 而void max(int a);与int max(int a);是不能实现函数重载的,1.3 C+对C的扩充,1.3.5函数模板 函数模板:实际上是一个通用的函数,其函数类型和形式类型不具体指定,用一个虚拟的类型来代替。这个通用的函数称为函数模板。 例1.8 求3个数中最大值的数(分别考虑整数、实数、长整型的情况)。,1.3 C+对C的扩充,#include using namespace std; 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; int 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); cout“max_f=“nendl; /函数值为实型 long int p;p=max(g,h,i); cout“max_l=“pendl;/函数值为长整型 return 0;,1.3 C+对C的扩充,#include using namespace std; template T max(T a,T b,T c) if(ba) a=b; if(ca) a=c; return a; int main( ) int i1=8,i2=5,i3=6,i; double d1=56.9,d2=90.765,d3=43.1,d; long g1=67843,g2=-456,g3=78123,g; i=max(i1,i2,i3); d=max(d1,d2,d3); g=max(g1,g2,g3); cout“i_max=“iendl;cout“d_max=“dendl; cout“g_max=“gendl; return 0; ,1.3 C+对C的扩充,1.3.6有默认参数的函数 函数原型:float volume(float h,float r=2.5); 函数调用:float v1=volume(2);/h的值为2,r的值为2.5 float v2=volume(2,3);/ h的值为2,r的值为3 设有函数原型:float volume(float h=2,float r); 函数调用: float v1=volume(5); 实参与形参的结合是从左至右顺序进行的,即第n个实参必然和第n个形参结合,因此将5传递给h,而r则没有对应的实参值。所以指定默认值的参数必须放在形参列表中的最右端。注意点: 不能重复定义函数的默认值。 一个函数不能既作为重载函数,又作为有默认参数的函数。,1.3 C+对C的扩充,1.3.7变量的引用,1、引用的概念:在C+中,变量的“引用”就是变量的别名,因此引用又称为别名。建立“引用”的作用是为一个变量起另一个名字,以便在需要的时候可以方便、间接地引用该变量。对一个变量的“引用”的所有操作,实际上都是对其所代表的(原来的)变量的操作。 例:int a; int /&:表示引用的符号,b即为a的一个别名, a,b在内存中占用同一个内存单元。,1.3 C+对C的扩充,2、引用的简单使用 例1.9了解引用和变量的关系 #include using namespace std; int main( ) int a=10; int ,1.3 C+对C的扩充,3、关于引用的简单说明 引用并不是一种独立的数据类型,它必须与某一种类型的数据相联系。声明引用时必须指定它代表的是哪个变量,即对它初始化。例: int a;int ,1.3 C+对C的扩充,3、关于引用的简单说明 区分/错误,企图重新声明c为整型变量b的别名,1.3 C+对C的扩充,4、将引用作为函数参数 变量名作用函数的参数(值传递) #include using namespace std; void swap(int a,int b) /实现a和b的值互换 int temp; temp=a; a=b; b=temp; int main( ) int i=3,j=5; swap(i,j); couti“,“jendl; /i和j的值未互换 return 0;,1.3 C+对C的扩充,4、将引用作为函数参数 传递变量的指针(地址传递) #include using namespace std; void swap(int *p1,int *p2)/通过形参改变了实参的值 int *temp; temp=p1; p1= p2; p2=temp; int main( ) int i=3,j=5; swap(,1.3 C+对C的扩充,4、将引用作为函数参数 传递变量的别名(引用传递) #include using namespace std; void swap(int ,1.3 C+对C的扩充,5、对引用的进一步说明 不能建立void类型的引用,因为任何实际存在的变量都有一种确定的类型,而不是void类型。 不能建立引用的数组。 char c6=“hello”; char /p指向变量a,1.3 C+对C的扩充,5、对引用的进一步说明 可以建立指针变量的引用,如: int i=5; int *p=/正确,1.3 C+对C的扩充,5、对引用的进一步说明 可以用常量或表达式对引用进行初始化,但此时必须用const作声明,如: int i=5; const ,1.3 C+对C的扩充,1.3.8内置函数(内联、嵌函数) 内置函数:函数类型前加inline关键字,内联函数在编译时将所调用函数的代码嵌入到主函数中。 #include using namespace std; inline int max(int a,int b,int c) /这是一个内置函数 if (ba) a=b; if (ca) a=c; return a; /求3个整数中的最大者 int main( ) int i=7,j=10,k=25,m; m=max(i,j,k); cout“max=“mendl; return 0;,1.3 C+对C的扩充,13.9作用域运算符,#include using namespace std; float a=13.5; int main( ) int a=5; coutaendl; return 0; ,(:),#include using namespace std; float a=13.5; int main( ) int a=5; coutaendl; cout:aendl; return 0; ,1.3 C+对C的扩充,1.3.10 字符串变量 1、定义字符串变量 string str; str=“08计算机1、2班” 要使用字符串功能,必须在程序的开头将”string”头文件包含进来,即加上:#include 2、对字符串变量的赋值 string str1=“08计算机1、2班”; string str2; str2=“08计算机1、2班”; 字符数组的赋值:char ch20= “08计算机1、2班”;,1.3 C+对C的扩充,2、对字符串变量的赋值 string str1=“06计算机专科1、2班”; string str2=“计算机应用与维护专业”; 若有str1=str2;则str1的值为:“计算机应用与维护专业” 若有str2=str1;则str2的值为:“ 06计算机专科1、2班” 而不用去考虑字符串的长度问题 3、字符串变量的输入输出 string str; cinstr; coutstr;,1.3 C+对C的扩充,4、字符串变量的运算 用赋值运算符实现字符串复制 str1=str2;其作用与strcpy(str1,str2); 用加法运算符实现字符串连接 string str1=“C+”; string str2=“ program”; string str3=str1+str2; 运算后str3的结果为: “C+ program”; 用关系运算符实现字符串比较 可以直接用关系运算符进行比较大小,1.3.11 动态分配/撤销内存的运算符new和delete 1、new运算符 new运算符用于动态的申请所需的内存单元,返回指定类型的一个指针。它的语法格式为: 指针=new 数据类型; 例如:int *p; p=new int; *p=1; 系统自动根据int类型的空间大小开辟内存单元,用来存放int型数据,并将首地址保存在指针p中。 指针=new 数据类型(整型表达式) 例如:int *p; p=new int(30); 则系统分配int类型所占用的存储空间,同时将30存放到刚刚分配的内存单元中,指针p指向首地址。,1.3 C+对C的扩充,也可以用new运算符申请一块保存数组的内存单元, 即创建一个数组。创建一维数组的语法格式为: 指针=new 数据类型整型表达式; 其中,表达式给出数组元素的个数,指针指向

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论