




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BasicFacilities—ShiftingfromCtoC++ProgramsC++面向对象程序设计双语教程(第3版)Chapter201C++ProgramStructureTheC++programconsistsofidentifiers,declarations,variables,constants,expressions,statements,andcomments.Acommonstructureforasimple,onefile,C++programincludesthefollowing:Comments.Theydescribeprogramfeature,author,andsoon.C++ProgramStructureIncludestatements.Theyspecifytheheaderfilesforlibraries.Usingnamespacestatement.Typically,thisisonly“usingnamespacestd”.Globaldeclarations(constants,types,variables,…).Avoidglobalvariablesifpossible.C++ProgramStructureFunctionprototypes(declarations).Mainfunctiondefinition.Functiondefinitions.C++ProgramStructureThefollowingexampleisusedtoillustrateaC++programstructure.Donotbetoo
concernedwiththedetailsintheprogram-justobserveitsover-alllookandstructure.C++ProgramStructureAllC++programscompriseoneormorefunctions,whicharealogicalgroupingofone
ormorestatements.Afunctionisidentifiedbyafunctionnameandafunctionbody.C++ProgramStructureAfunctionnameisidentifiedbyawordfollowedbyparentheses.InExample2-1,mainisafunctionname.Allprogramsmusthaveafunctioncalledmain.Theexeeutionofaprogrambeginswiththemainfunction.Thekeywordintalongwiththefunctionnamesignifiesthatthefunctionreturnsanintegervalue.C++ProgramStructureAfunctionbodyissurroundedbycurlybraces({}).Thebracesdelimitablockof
programstatements.Everyfunctionmusthaveapairofbraces.C++ProgramStructure02Input/Output
StreamsAprogramperformsthreebasicoperations:itgetsdata,itmanipulatesthedata,anditoutputtheresults.BecausewritingprogramsforI/Oisquitecomplex,C++offersextensivesupportforI/Ooperations.InC++,I/Oisasequenceofcharacters,calledastream,fromthe
sourcetothedestination.Input/OutputStreamsAstreamisasequenceofcharactersfromthesourcetothedestination.Inputstreamisasequenceofcharactersfromaninputdevice(e.g.keyboard)tothecomputer.Outputstreamisasequenceofcharactersfromthecomputertoanoutputdevice(e.g.monitor).Input/OutputStreamsThestandardlibraryoffersistreamforinput.Theistreamdealswiththecharacterstring
representationsofbuilt-intypesandcaneasilybeextendedtocopewithuser-definedtypes.Withinputstreams,theextractionoperator(>>)isusedtoremovevaluesfromthestream.Thismakessense:whentheuserpressesakeyonthekeyboard,thekeycodeisplacedinan
inputstream.Yourprogramthenextractsthevaluefromthestreamsoitcanbeused.InputStreamInput/OutputStreamsThe>>operator(“getfrom”)isusedasaninputoperator;ein(readsee-in)isoneofthestandardInput/Outputstreams,i.e.iostream.Thetypeoftheright-handoperandof>>determineswhatinputisacceptedandwhatisthetargetoftheinputoperation.Input/OutputStreamsOutputStreamWithoutputstreams,theinsertionoperator(<<)isusedtoputvaluesinthestream.Thisalsomakessense:youinsertyourvaluesintothestream,andthedataconsumer(e.g.monitor)usesthem.Input/OutputStreamsOutputStreamThe<<operator(“putin”)areusedasanoutputoperation.cout(readsee-out)isalsooneofthestandardInput/Outputstreams,i.e.iostream.Bydefault,valuesoutputtocoutareconvertedtoasequenceofcharacters.Input/OutputStreams03ConstantsC++offerstheconceptofauser-definedconstant,aconst,toexpressthenotionthatthevalueofavariablecannotbechangeddirectly.Thisisusefulinseveralcontexts.Forexample,manyvariablesdonotactuallyhavetheirvalueschangedafterinitialization;symbolic
constantsleadtomoremaintainablecodethandoliteralsembeddeddirectlyincode;pointers
areoftenreadthroughbutneverwrittenthrough,andmostfunctionparametersarereadbut
notwrittento.ConstantsTheconstkeywordspecifiesthatavariable'svalueisconstantandtellsthecompilertopreventtheprogrammerfrommodifyingit.Itcanbeaddedtothedeclarationofavariabletodeclarethevariableasaconstant.ConstantsGiventhis,thecompilerknowsthevaluesofclandc2sothattheycanbeusedinconstantexpressions.Sincethevaluesofc3andc4arenotknownatcompiletime,storagemustbeallocatedfore3andc4.Becausetheaddressofc2istaken(andpresumablyusedsomewhere),storagemustbeallocatedforc2.ConstantsPointersandConstantsWhenusingapointer,twovariablesareinvolved:thepointeritselfandthevariablepointedto."Prefixing³thedeclarationofapointerwithconstmakesthevariable,butnotthepointer,aconstant.Todeclareapointeritself,ratherthantheobjectpointedto,tobeaconstant,weusethedeclaratoryoperator*constinsteadofplain*.Constants04FunctionsLetuslookbacktheprograminExample1-3ofChapter1.Whenyouworkonaprogram,itcanbedividedintoafewblockscalledfunetionbody.Sometimes,itisnotpracticaltoputtheentireprogramintoonefunction,e.g.themainfunction,asyouseeinExample1-3.Youmustlearntobreaktheproblemintomanageablepieces.FunctionsFunctionDeclarationsAfunctiondeclarationestablishesthenameofthefunction,thetypeofdatareturnedby
esofitsparameters.FunctionsAfunctiondeclarationconsistsofareturntype,aname,andaparameterlist.Inaddition,afunctiondeclarationmayoptionallyspecifythefunction'slinkage.InC++,thedeclarationcanalsospecifyanexceptionspecification,aconst-qualification,oravolatile-qualification.FunctionsAdeclarationinformsthecompileroftheformatandexistenceofafunctionpriortoitsuse.Afunctioncanbedeclaredseveraltimesinaprogram,providedthatallthedeclarationsarecompatible.Animplicitdeclarationofafunctionisnotallowed:everyfunctionmustbeexplicitlydeclaredbeforeitcanbecalled.FunctionsFunctionDeclarationsAfunctionargument(i.e.actualparameter)isanexpressionoravariablethatyouusewithinthe
parenthesesofafunctioncall.Afunetionparameter(i.e.formalparameter)isanobjeetorreferencedeclared
withintheparenthesisofafunctiondeclarationordefinition.FunctionsFunctionprototypesarerequiredforcompatibilitybetweenCandC++.Thenon-prototypeformofafunctionthathasanemptyparameterlistmeansthatthefunctiontakesanunknownnumberofparametersinC,whereas,inC++,itmeansthatittakesno
parameters.FunctionsFunctionDefinitionsAfunctiondefinitionconsistsofitsname,itsreturntype,itsparameterlistandbody.Thefunctionheaderspecifiesthefunction'sreturntype,nameandparameters.Thefunetionsignatureconsistsofthefunctionnameandtheparameterlist.FunctionsEveryfunctioninaprogrammustbedefinedsomewhere(onceonly)beforeitisinvoked.Afunctiondefinitionisafunctiondeclarationinwhichthebodyofthefunctionispresented.FunctionDefinitionsFunctionsDefaultArgumentsAgeneralfunctionoftenneedsmoreparametersthatarenecessarytohandlesimplecases.Inparticular,functionsthatconstructobjectsoftenprovideseveraloptionsforflexibility.FunctionsAdefaultargumentmeansthatthedefaultvaluesarepassedtotheparameterswhena
functionisinvokedwithoutthearguments.Ofcourse,theusercanchangethedefaultvalueif
heorsheprovidesavalueforthedefaultparameter.FunctionsInlineFunctionsAninlinefunctionisoneforwhichthecompilercopiesthecodefromthefunctiondefinitiondirectlyintothecodeofthecallingfunctionratherthancreatingaseparatesetofinstruetionsinmemory.Insteadoftransferringcontroltoandfromthefunctioncodesegment,amodifiedcopyofthefunctionbodymaysubstitutethefunctiondirectlyforthefunctioncall.Inthisway,theperformaneeoverheadofafunetioncallisavoided.FunctionsFunctionOverloadingMostoften,itisagoodideatogivedifferentfunctions
differentnames,butwhensomefunctionsconceptuallyperformthesametaskonobjectsofdifferenttypes,itcanbemofeconvenienttogivethemthesamename.Usingthesamenameforoperationsondifferenttypesiscalledoverloading.Functions05ReferencesReferenceDefinitionAreferenceisasimplereferencedatatype.Areferenceisanaliasoralternativenameforanobject.ThismeansthatC++allowsyoutocreateasecondnamefortheobjectthatyoucanusetoreadormodifytheoriginaldatastoredintheobject.ReferencesParametersprovideacommunicationlinkbetweenthecallingfunction(suchasmain)andthecalledfunction.Theyenablefunctionstomanipulatedifferentdataeachtimetheyarecalled.Ingeneral,therearetwotypesofformalparameters:valueparametersandreferenceparameters.ReferenceVariablesasParametersReferencesReferencesasReturningValuesReturningvaluesfromafunctiontoitscallerbyvalue,address,orreferenceworksalmost
the
same way
aspassingparameterstoafunction.Theyhavethesameadvantages
and
disadvantages.Theprimarydifferencebetweenthetwoissimplytheoppositedirectionsofdataflow.However,thereisonemoreaddedbitofcomplexity-becauselocalvariablesinafunctiongooutofscopewhenafunctionreturns,weneedtoconsidertheeffectofthisoneachretumtype.ReferencesReturningbyreferenceistypicallyusedtoreturnargumentspassedbyreferencetothe
functionbacktothecallerusedontheright-handsideofanassignmentoperator.Ifthefunctioncallcanappearontheleft-handsideofanassignmentoperator,whatwillhappen?ReferenceasLeft-HandValuesReferences06Namespaces
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西北工业大学《工程训练A(一)》2023-2024学年第二学期期末试卷
- 苏州科技大学《食品质量与安全基础实验》2023-2024学年第二学期期末试卷
- 淮北职业技术学院《三字一话》2023-2024学年第一学期期末试卷
- 德州职业技术学院《数字品牌》2023-2024学年第一学期期末试卷
- 重庆城市科技学院《体育保健》2023-2024学年第一学期期末试卷
- 陇东学院《数据分析思维与方法》2023-2024学年第二学期期末试卷
- 珠海艺术职业学院《足球理论与实践Ⅱ》2023-2024学年第一学期期末试卷
- 课题成果发布
- 河南农业职业学院《药品生产质量管理工程理论与实践1》2023-2024学年第一学期期末试卷
- 实验室仪器设备管理
- 油气藏产能预测模型-深度研究
- 2025年上海烟草集团上海新型烟草制品研究院限公司招聘8人高频重点提升(共500题)附带答案详解
- 2025年中邮证券有限责任公司招聘笔试参考题库含答案解析
- DB11-T 1754-2024 老年人能力综合评估规范
- 2025年中考语文名著复习计划
- 《铁路轨道维护》课件-线路标志标识刷新作业
- 《铁路轨道维护》课件-更换接头夹板作业
- 成人慢性肾脏病食养指南(2024年版)
- 新概念英语第一册Lesson67-(共69张课件)
- 羊传染性脓疱病
- 医学实验室与临床交流与沟通的方式和意义
评论
0/150
提交评论