TP-2973C++程序设计概述ppt.ppt

上传人:创****公 文档编号:2346808 上传时间:2020-02-29 格式:PPT 页数:54 大小:182.50KB
返回 下载 相关 举报
TP-2973C++程序设计概述ppt.ppt_第1页
第1页 / 共54页
TP-2973C++程序设计概述ppt.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《TP-2973C++程序设计概述ppt.ppt》由会员分享,可在线阅读,更多相关《TP-2973C++程序设计概述ppt.ppt(54页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C+面向对象程序设计,AnIntroductiontoObject-OrientedProgrammingUsingC+,C+面向对象程序设计教学内容,第1章C+概述第2章类和对象第3章面向对象程序设计概述第4章进一步学习类和对象第5章堆与复制构造函数第6章继承性:派生类第7章运算符重载第8章虚函数和多态性第9章模板第10章类库和C+的标准模板库STL第11章输入输出流第12章异常处理,第一章,第1章C+概述C+ABetterC,1.1C+起源和特点,1.1.1C+的起源1.1.2C+的特点,1.2C+程序的结构,1.2.1C程序与C+程序比较1.2.2C+程序结构1.2.3C+程序的编辑、编

2、译和运行,C程序与C+程序比较之一,main()inta,b,sum;/*定义三个整型变量*/a=123;b=456;sum=a+b;printf(sumis%dn,sum);,main()inta,b,sum;/定义三个整型变量a=123;b=456;sum=a+b;coutsum;,C程序与C+程序比较之二,#includestdio.hmain()chara,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);,#include“iostream.hvoidmain()chara,b,c;a=B;b=O;c=Y;coutabfs;coutHe

3、resyourdata:ifendlsn;return0;,单行注释和新的I/O流(续),cout是预定义的输出流对象,类似于C语言中的stdout。输出运算符,可用于输出C+语言中任何基本类型的数据。cin是预定义的输入流对象,类似于C语言中的stdin。输入运算符,可用于输入C+语言中任何基本类型的数据。(注意:输入和输出并不是C+语言的组成部分,它们由流库iostream支持。),输入含有空格的字符串,/Usegetline()toreadastringthatcontainsspaces.#include#includeusingnamespacestd;intmain()charst

4、r80;coutEnteryourname:;cin.getline(str,79);coutstrn;return0;,1.3.2const存取修饰符,对象A:亲爱的,你千万不能变心?对象B:放心吧!亲爱的。对象A:你发誓!对象B:不用发誓,因为我是const!const对象B;,常量Constants,在C中,可以使用#define来定义符号常量。C+提供了一种更灵活、更安全的方式来定义常量,即使用关键字const来定义符号常量。,常量例子Constantexamples,constfloatPI=3.1415926;/PI是一个常量constintv=1,2,3,4;/数组元素vi是常量

5、constintx;/error:noinitializer/定义常量时应初始化,否则出错。,voidf()model=200;/errorv2+;/error,值替换valuesubstitution,#defineBUFSIZE100,constintbufsize=100;,Becauseofsubtlebugsthatthepreprocessormightintroduce,youshouldalwaysuseconstinsteadof#definevaluesubstitution.,常量const和指针,指针所指向的对象为常量Pointertoconst指针本身为常量const

6、pointerTheconstmodifiesthethingitis“closestto.”,指向常量的指针Pointertoconst,constint*u;/pointertoconstant*u=18;/error:upointstoconstantu=p;/OK,常指针constpointer,intd=1;int*constw=/error:wisconst,const修饰函数参数,voidprint_salary(constfloat*salary)coutsalaryy)z=x;elsez=y;return(z);内联函数的调用方法与普通函数没有区别。,类中定义的内联函数Inl

7、inefunction,Anyfunctiondefinedwithinaclassbodyisautomaticallyinline,classDateintday,month,year;public:voidinit_date(intdd,intmm,intyy)day=dd;month=mm;year=yy;,Hereinit_dateisainlinefunction,函数调用时的时间开销,1函数调用时的时间开销:保护现场,恢复现场。2用关键字inline说明内嵌函数。编译器直接用内嵌函数体的编译代码插入在函数调用语句处,这一过程称为函数的嵌入扩展。利用内嵌函数减少了调用普通函数时的压

8、栈和弹栈操作,从而提高程序的运行速度。3内嵌函数比带参数的宏的好处。一般情况下,只有较短的函数才定义为内嵌函数。使用内嵌函数实际上是一种增加空间开销以减小时间开销的方法。,为什么使用内联函数,Efficiency效率在C程序中,可使用宏macros达到同样的目的,但是宏是通过预处理来处理的,不进行类型检查,容易造成难以发现的错误。宏macros在类的内部不能使用,宏不能作为类的成员。,为什么使用内联函数(cont.),为了克服宏的上述缺陷,C+引入了内联函数。内联函数具有高效率,而且:进行类型检查,避免出现类型不匹配的错误。可以作为类的成员函数。Toretaintheefficiencyoft

9、hepreprocessormacro,buttoaddthesafetyandclassscopingoftruefunctions,C+hastheinlinefunction.,Howdoinlinefunctionswork编译器处理内联函数的过程,类型检查Typechecking(Toassuresafety)将函数代码插入到函数调用处thensubstitutesthefunctionbodyforthefunctioncall这样函数代码将占据更所得存储空间TheinlinecodedoesoccupyspaceTheshort,smallandfrequentlycalledf

10、unctionsaresuitableforinlinefunctions.,1.3.4函数原型(functionprototype),什么是函数原型?描述函数原型的三大要素:函数名参数类型函数返回值类型函数原型的例子:inttranslate(floatx,floaty,floatz);inttranslate(float,float,float);,【例1.7】,voidsqr_it();/*functiondeclaration*/intmain()intx;x=10;sqr_it(x);printf(Thesquareofxis%dn,x);return0;voidsqr_it(int

11、*i)*i=(*i)*(*i);,运行时出错,【例1.7】本例的C程序能够成功通过诸如TurboC这样的C编译器的检查,但会在运行阶段发生错误。该程序运行后的结构显示如下:Thesquareofxis10Nullpointerassignment,使用函数原型执行强类型检查【例1.8】,voidsqr_it(int*i);/函数原型intmain()intx;x=10;sqr_it(x);coutThesquareofxisxn;return0;voidsqr_it(int*i)*i=(*i)*(*i);,typemismatch类型不匹配,函数原型的作用,C+语言是强类型化语言,任何函数在使

12、用以前必须有该函数的原型说明,以便进行实际参数与形式参数之间的类型匹配检查。函数返回值的类型和函数参数的类型、个数、次序在函数声明,函数定义和函数调用时必须匹配。C+语言的编译器执行上述检查能显著减少很多隐藏的错误。,函数原型与C语言的函数类型说明,函数原型是在C语言的函数类型说明(函数声明)的基础上进行扩充后形成的,它不但说明了函数返回值的类型,还要确定函数参数的类型、个数、次序及缺省值。,1.3.5带缺省参数的函数,例如:以下函数带有一个缺省值为0的参数。voidmyfunc(doubled=0.0)myfunc(198.234);/passanexplicitvaluemyfunc();

13、/letfunctionusedefault,缺省参数的例子,voidDrawCircle(intx,inty,intr=10);DrawCircle(50,20);DrawCircle(50,100,30);,带缺省参数函数主要由两个作用:简化编程;有利于程序扩充,而不影响原有代码。,1.3.6函数名重载(overload),两或两个以上的函数共享同一个名称,就称为函数名重载。OverloadedFunctionsMultiplefunctionscanhavethesamenamewithdifferentimplementations.函数重载简化了函数调用工作。,函数重载的例子,#in

14、clude/Overloadabs()threewaysintabs(intn);longabs(longn);doubleabs(doublen);/prototypeisneccessaryforC+compiler,这些都是函数原型,函数重载的例子,main()coutAbsolutevalueof-10:abs(-10)n;coutAbsolutevalueof-10L:abs(-10L)n;coutAbsolutevallueof-10.01:abs(-10.01)n;return0;,abs()forints,/abs()forintsintabs(intn)coutIninter

15、gerabs()n;returnn0?-n:n;,abs()forlongs,/abs()forlongslongabs(longn)coutInlongabs()n;returnn0?-n:n;,abs()fordoubles,/abs()fordoublesdoubleabs(doublen)coutIndoubleabs()n;returnn0?-n:n;,1.3.7new和delete运算符,在C语言中,使用函数malloc()分配动态内存,用函数free()释放动态内存;在C+语言中,还可以使用运算符new分配动态内存,用delete释放动态内存。,new和delete的简单应用,/

16、Asimpleexampleofnewanddelete.#includemain()int*p;p=newint;/allocateroomforaninteger/alwaysmakesurethatallocatesucceededif(!p)coutAllocationerrorn;return1;,Asimpleexampleofnewanddelete(cont),*p=1000;coutHereisintegeratp:*pn;deletep;/releasememoryreturn0;,new和delete的优点,new和delete完成的功能类似于malloc()与free(

17、),但它们有几个优点:1)简洁性:能自动计算所要分配的内存的大小;2)可靠性:编译时进行类型检查;3)灵活性:new和delete运算符可以被重载。注意:用new申请的动态内存必须用delete释放。,1.3.8引用(reference),引用是一个隐含指针,可以看作变量的另一个名称(别名)。引用有三种使用方法:,引用作为函数参数(最重要的用法),#includevoidf(int,引用作为函数参数(继续),/f()nowusesareferenceparametervoidf(int/put100intotheargumentusedtocallf(),指针参数和引用参数的比较,/交换实际参

18、数的值voidswap(int*x,int*y)inttemp;temp=*x;/保存地址x中的值*x=*y;/putyintox*y=temp;/putxintoy/调用函数swap()时使用变量i和j的地址swap(,/交换实际参数的值voidswap(int,引用参数的几个好处,当使用引用参数的时候,传递的是用作参数的变量的地址。1)地址被自动传递;不需要记住传递参数的地址。2)比指针方法更简练,清晰。3)当对象作为引用被传递给函数的时候,没有进行拷贝(复制)。,引用作为函数的返回值,/Asimpleexampleofafunctionreturnnigareference.#includeint,引用作为函数的返回值(继续),/Returnanintreference.int/returnsareferencetox,独立的引用,至今没有发现独立引用的价值,在一个程序中用两个名字来描述同一个对象,可能使程序出现混乱。(应当避免),习题1,必做题:P20:2,8,9,10选作题:3,4,6,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理制度

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com