书签 分享 收藏 举报 版权申诉 / 29
上传文档赚钱

类型C++ppt讲义1-4 .ppt

  • 上传人(卖家):hyngb9260
  • 文档编号:6155967
  • 上传时间:2023-06-04
  • 格式:PPT
  • 页数:29
  • 大小:224KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C++ppt讲义1-4 .ppt》由用户(hyngb9260)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    C+ppt讲义1-4 ppt 讲义
    资源描述:

    1、2023-6-41面向对象程序设计C+语言基础 主讲:魏宝刚2023-6-42第一讲 绪论 程序设计语言程序设计语言表达软件的工具表达软件的工具 计算机不是一台真正的机器 程序一种软件机器。这种机器的建造依赖于工具、材料和想象 力之间的相互作用,程序设计语言定义了工具和材料。数学模型(形式化描述)比程序设计语言更重要。程序设计语言的发展程序设计语言的发展 硬件发展软件危机结构化程序设计软件工程面向对象技术 机器码低级高级;编译程序编译程序(如如C+Builder)操作系统操作系统 (如如Linux)数据库系统数据库系统(如如Oracle)系统工具软件(如系统工具软件(如Word)领域应用软件领

    2、域应用软件2023-6-43 结构化过程和面向对象编程 结构化程序设计:结构化程序设计:总体结构层次树状;局部组织模块化。一般不允许goto.程序处理数据的一系列过程;数据,过程分开存储;“分而治之”。缺点:数据和任务分离,难理解、维护;重用性差;软件开发的瀑布模型:软件开发的瀑布模型:六个阶段:软件计划可行性分析、工作范围和代价;需求分析(做什么)功能需求、性能需求、环境需求与限制;软件设计(怎么做)概要设计和详细设计;软件编码用具体语言实现设计;软件测试单元测试和综合测试;软件维护已交付的软件修改、扩充、排错;2023-6-44 面向对象程序设计面向对象程序设计:菜单、按钮、窗口菜单、按钮

    3、、窗口事件驱动;事件驱动;数据和数据处理过程数据和数据处理过程对象;对象;面向对象的四大支柱:封装、数据隐藏、继承和多态性。面向对象的四大支柱:封装、数据隐藏、继承和多态性。C C语言贝尔实验室的语言贝尔实验室的 Dennis Ritchie Dennis Ritchie 开发的,开发的,19721972年在一台年在一台DECDEC PDP-11 PDP-11实现。实现。UNIXUNIX系统的开发语言。系统的开发语言。满足复杂性要求,满足复杂性要求,19801980年年 贝尔实验室的贝尔实验室的 Bjame Stroustrup Bjame Stroustrup 开发带开发带类的类的C C。1

    4、9831983年正式取名年正式取名C+C+。真真实实世世界界的的数数据据 C+程程序序 C+编编译译器器 操操作作系系统统 物物理理计计算算机机 2023-6-45C+程序的结构nC+应用程序的结构n简单的C+程序nC+源程序的执行2023-6-46 C+应用程序的结构老师类老师类 学生类学生类 张三张三 李四李四 王萍王萍 赵英赵英 类对象类对象陈老师陈老师 实例对象实例对象 C+程序是一组相互通信的对象程序是一组相互通信的对象main主控对象主控对象C+C+应用程序设计:应用程序设计:1.定义应用需要的类对象;2.定义主控对象,完成对象间的通信;2023-6-47 简单的简单的C+C+程序

    5、程序#include int mail()cout“Hello,Worldn”;一般:公用数据和函数说明放在头文件(.h)中;实现函数功能的函数体和局部数据放在源文件(.cc)中;程序是由一行行符号序列表达的,空格将符号序列分为六类:关键字:include,int,const等说明语句、数据的性质;标识符:cin,cout,a,b等代表运算对象;运算符:b)?a:b;含义?含义?C#include f(a,b)char*a;float b;printf(“a:%s,b:%fn”,a,b);main()f(12.3,12.3);C+#include f(char*a,float b)cout“a

    6、:”a“,”“b”bendl;void main()f(12.3,12.3);?4 函数 C+C+与与 C C不同之处是声明使用原型,以保证实参和形参类型一致(编译器检查)不同之处是声明使用原型,以保证实参和形参类型一致(编译器检查)2023-6-415 ex 5.Char*pChar;pChar=new char;char*string=new char25;/delete pChar;delete string;new和和delete运算符和运算符和C中的中的malloc和和free函数的区别:函数的区别:new运算符根据对象的类型,自动决定其大小,而malloc要指定分配存储空间的大小;

    7、new返回指向此类型的指针,malloc返回指向void*类型的指针。每种运算符只能用于特定的对象:ex 6.intex 6.int i;i;*i=10;?i=10;?ex 7.12.3%3?ex 7.12.3%3?12.32 12.32?:是作用域分辨符,用它可以访问隐藏的全局变量。2023-6-416 程序的结构整个程序整个程序.C文件文件1.C文件文件n函数函数1函数函数k函数函数1函数函数l全局变量局部变量静态变量工程文件(.dsw,.prj):告诉编译器可执行文件由哪些.c文件装成;连上哪些.obj文件;要连的标准库.lib2023-6-417 程序运行时的内存占用栈区(栈区(sta

    8、ck area)堆区(堆区(heap area)数据区(数据区(data area)代码区(代码区(code area)存放程序的代码部分存放程序的全局数据和静态数据存放程序动态申请的数据存放程序的局部数据和参数2023-6-418#includeint m=80;void F1(int w)static int n=70;int k=60;/1 m+;n+;k+;w+;/2 printf(“F1()-m:%d n:%d k:%d w:%dn”,m,n,k,w);void F2()int m=90;m+;/4 F1(m);printf(“F2()-m:%d n”,m);void main()i

    9、nt w=20;F1(w);/3 printf(“下面调用下面调用F2()n”);F2();k 60w 20w 20未用未用m 80F1的的n 70main、F1、F2代码代码数据区代码区栈区堆区栈顶F1maink 61w 21w 20未用未用m 81F1的的n 71main、F1、F2代码代码数据区代码区栈区堆区栈顶F1maink 61w 21w 20未用未用m 81F1的的n 71main、F1、F2代码代码数据区代码区栈区堆区main栈顶k 61m 91w 20未用未用m 81F1的的n 71main、F1、F2代码代码数据区代码区栈区堆区main栈顶F2k 61w 91m 91w 20

    10、未用未用m 81F1的的n 71main、F1、F2代码代码数据区代码区栈区堆区main栈顶F2F12023-6-419 流程控制、函数和文件1 1 流程控制语句(顺序、条件、循环)流程控制语句(顺序、条件、循环)条件语句条件语句 (if-else;switch)(if-else;switch)注意:条件表达式的值为非零表示“真”;值为零则表示“假”。C+无布尔类型;ex 1.switch(val)case 1:cout“case 1”endl;case 2:cout“case 2”endl;default:cout“case not found”endl;若若valval为为1 1,输出结果

    11、?,输出结果?循环语句循环语句 (while;for)while;for)for(for(表达式表达式1 1;表达式;表达式2 2;表达式;表达式3 3)语句语句表达式表达式1 1;While(While(表达式表达式2)2)语句语句;表达式表达式3;3;2023-6-420C+函数作用:1、大任务化小时,表示小任务;2、定义方法。文件是编译的独立单位n21m21文件文件文件程序函数函数函数文件函数和文件函数和文件 1 1 作用域作用域 标识符的作用域有:块、函数、文件、全局块、函数、文件、全局 4种 在块和函数内声明的变量作用域是块和函数;在函数外声明的静态全局变量作用域是定义它的文件;全局

    12、名的作用域整个程序。ex 2.int x;void f1()int x;x=1;int x;x=2;x=3;int*p=&x;2023-6-4212 2 存储分类符存储分类符auto(自动的)存器的)register(寄)static(静态的)extern(外部的存储分类符 外层作用域不能访问内层作用域,利用外层作用域不能访问内层作用域,利用:运算符可访问当前作用域所隐藏的全局名。运算符可访问当前作用域所隐藏的全局名。但不能访问隐藏的局部名。作用域总是始于说明点。但不能访问隐藏的局部名。作用域总是始于说明点。ex 3.int x=11;void f2(int z)int z;int y=x;i

    13、nt x=1;:x=2;y=x;外部的外部的:多个文件共享的变量,用extern通知编译器同名同类型变量引用同一存储区。ex 4./file1.cc /file2.cc int a=1;extern int a;/声明声明 int f()int f();/声明(将名字与类型联系起来)声明(将名字与类型联系起来)void g()/a=f();2023-6-422 静态的静态的:分配的存储空间直到整个程序结束才收回(全局变量特性);局部于某一作用域(局部变量特性)按作用范围可分:静态局部变量,局限于特定函数,但出作用域并不释放。静态全局变量,局限于它的源文件。ex 5.#include void

    14、f();void main()for(int i=0;i=3;i+)f();输出结果输出结果?void f()static int a=0;couta+endl;函数也可以声明为静态的,局部于它所在的文件。ex 6./file1.cc static void f(char)/file2.cc static void f(char)/若去掉若去掉static?寄存器的寄存器的:用CPU中寄存器提高频繁使用量的速度。自动的自动的:函数的局部变量,出函数自动消失,一般省去auto。2023-6-423 3 3 函数参数传递函数参数传递 ex 7.#inlcude void swap(int x,in

    15、t y)int temp;temp=x;x=y;y=temp;void main()int x=10,y=20;swap(x,y);cout“x:”x“y:”yendl;结果?结果?ex 8.#inlcude#inlcude void swap(int*x,int*y)void swap(int&x,int&y)int temp;int temp;temp=*x;temp=x;*x=*y;x=y;*y=temp;y=temp;void main()void main()结果?结果?int x=10,y=20;int x=10,y=20;swap(&x,&y);swap(x,y);cout“x:

    16、”x“y:”yendl;cout“x:”x“y:”yendl;参数传值是参数参数传值是参数值的拷贝,而不值的拷贝,而不是参数本身。是参数本身。函数要改变调用它的函函数要改变调用它的函数的变量有两种方法:数的变量有两种方法:传指针调用传指针调用和和引用调用引用调用。当形参和实参结合时,当形参和实参结合时,复制的是变量的地址。复制的是变量的地址。2023-6-4244 4 函数参数函数参数 void f1(int a,int b=-1);调用形式:调用形式:f1(1,2);f1(2);void f2(int a,int b=-1,int c);?main()是编译器预定义的函数,是编译器预定义的函

    17、数,C+有两种形式:有两种形式:int main()/*/int main(int argc,char*argv )/*/argv 0 argv argc-1 存放运行环境参数。存放运行环境参数。ex 9.#inlcude int main(int argc,char*argv)if(argc!=2)cout“you forgot type parameter”endl;exit(1);cout argv1endl;return 0;namepr otherotherpryou forgot type parameter编译后执行结果:编译后执行结果:pr name2023-6-425 内联、

    18、重载和引用内联、重载和引用 1 1 宏和内联宏和内联 条件编译宏定义文件包含预编译处理语句文件包含:#include /包含文件内容取代该预处理语句?宏定义:#define define 字符串字符串1 1 字符串字符串2 2 /预编译时,将字符串1一律用字符串2替换 带参宏:例如,#define power(x)(x)define power(x)(x)*(x)(x)使用,x=4;y=6;z=power(x+y)x=4;y=6;z=power(x+y)条件编译:#if if 条件条件 源程序部分源程序部分1 1#elseelse 源程序部分源程序部分2 2#endifendif /编译时,根

    19、据条件决定取哪部分编译 在C+中常用const变量和内联函数来代替宏和带参宏:例如:const int YES=1;/这种定义有类型信息,更安全2023-6-426 inline fac(int i)return i2?1:n inline fac(int i)return i2?1:n*facfac(n-1);(n-1);编译器在所有调用这个函数的地方将其实际的代码装上。内联函数要出现在每一调用该函数的源文件之中,所以一般放在头文件中。内联函数调用,编译器做类型检查,保证非法类型不传入;宏的优点是传入什么类型,返回同一类型。文件1文件2文件minline fac(intinline fac(

    20、int i)i)fac(intfac(int i)i)fac(intfac(int i)i).h文件文件1文件2文件mfac(intfac(int i)i)fac(intfac(int i)i)fac(intfac(int i)i).h文件inline fac(intinline fac(int i)i)2023-6-427 2 2 重载函数重载函数 C中求绝对值的函数:int iabs(int I);long labs(long l);double fabs(double d);C+C+用同一个函数名用同一个函数名 abs()abs()实现上面,用函数参数来区别到底调用哪个函数。所以把实现上

    21、面,用函数参数来区别到底调用哪个函数。所以把同一同一作用域内名字相同作用域内名字相同,但参数不同但参数不同的函数称为重载函数。这得益于函数原型不仅给出函数名,的函数称为重载函数。这得益于函数原型不仅给出函数名,而且指出了参数类型。而且指出了参数类型。为了保证编译器根据参数类型识别重载函数,必须保证重载函数的参数不同。为了保证编译器根据参数类型识别重载函数,必须保证重载函数的参数不同。参数类型的次序参数个数参数类型重载函数的参数差别 1、同名函数,仅返回值类型不同,但参数相同;2、两同名函数,仅用const或引用使参数类型有所不同;ex 10.int print(const int&);int

    22、print(int);3、加修饰符使参数有所不同,取决于实参的具体类型;ex 11.void print(unsigned int);void print(int);/print(1l);/出错出错 print(1u);/正确正确4、缺省参数有时也能导致二义性;ex 12.void print(int a,int b=1);void print(int a);/print(1);/二义性二义性 以下几种可能出现二义性:2023-6-428 3 3 函数、引用和常量函数、引用和常量 引用可作参数,也可作函数返回值,例如:int&getIndex();/返回一整型变量的引用 所以函数调用getIn

    23、dex与一整型变量引用同一存储区域(即是这一变量的别名)。ex 13.int Index=0;int&getIndex();return Index;void main()int n;n=getIndex();getIndex()=5;+getIndex();注意:注意:函数所引用的变量在函数调用返回后必须是存在,因此,不能返回自动函数所引用的变量在函数调用返回后必须是存在,因此,不能返回自动 变量或参数。变量或参数。由于常量不分配空间,所以也不能返回常量,由于常量不分配空间,所以也不能返回常量,但用但用constconst声明时,返回常量却是合法的声明时,返回常量却是合法的一般可安全返回全局变量、静态变量。一般可安全返回全局变量、静态变量。2023-6-429 ex 14.int&bardIdea1()int&barIdea2(int parm)int i;return parm;return i;虽然这两个程序编译不会出错,但结果难以预料 ex 15.int&bardIdea3()const int&bardIdea4()return 1;return 1;bardIdea3()出错。而编译器会创建临时的const int变量,去初始化bardIdea4()

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C++ppt讲义1-4 .ppt
    链接地址:https://www.163wenku.com/p-6155967.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库