資源描述:
《第2章-從C語(yǔ)言向C++過(guò)渡.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第二章從C語(yǔ)言向C++過(guò)渡主講:宋麗紅面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)OrientedObjectProgramming(C++)第二章從C語(yǔ)言向C++過(guò)渡§2-1C++語(yǔ)言的發(fā)展過(guò)程§2-2在較小范圍內(nèi)如何將C++增強(qiáng)C§2-3在較大范圍內(nèi)如何將C++增強(qiáng)C§2-1C++語(yǔ)言的發(fā)展過(guò)程C++語(yǔ)言基于C,是C的一個(gè)超集集合。C++繼承了C的全部?jī)?yōu)點(diǎn),而且還支持面向?qū)ο筇卣?。C++由BCPL和Simula67的某些靈感而導(dǎo)致產(chǎn)生的。1980年,C++由貝爾實(shí)驗(yàn)室的BjarneStroustrup創(chuàng)建,被稱為帶類的C。1994年,建立ANSIC++標(biāo)準(zhǔn)?!?-2在較小范圍內(nèi)如何將C++增強(qiáng)C一、
2、I/O流控制二、內(nèi)聯(lián)函數(shù)三、函數(shù)重載四、默認(rèn)參數(shù)的函數(shù)五、new和delete六、const說(shuō)明符七、引用八、程序結(jié)構(gòu)九、其他§2-2在較小范圍內(nèi)如何將C++增強(qiáng)C2.2.1I/O流控制C++中輸入/輸出流(一般叫iostreams或streams)提供了C的stdio.h庫(kù)中的所有功能。輸入/輸出流用作將具有類型的對(duì)象轉(zhuǎn)換成可讀的正文,反之亦然。流能讀寫二進(jìn)制數(shù)據(jù)。C++程序以四個(gè)預(yù)定義的流開始,它們是:cin標(biāo)準(zhǔn)輸入、cout標(biāo)準(zhǔn)輸出、cerr標(biāo)準(zhǔn)錯(cuò)、clog緩沖的cerr。標(biāo)準(zhǔn)輸入輸出流p23在iostream.h中說(shuō)明cout<<輸出流cin>>輸入流接收變量cout<<“He
3、llo,world!”inta;cin>>a;cout<<“姓名:??”<<“年齡:?”cin>>a>>f>>c;§2-2在較小范圍內(nèi)如何將C++增強(qiáng)C2.2.1I/O流控制2、使用控制符#include注意1、輸入流能自動(dòng)跳過(guò)空白字符2、字符串輸入避免溢出,可采取以下方法:chararray[SIZE];cin.width(sizeof(array));cin>>array;§2-2在較小范圍內(nèi)如何將C++增強(qiáng)C2.2.2內(nèi)聯(lián)函數(shù)使用關(guān)鍵字inline說(shuō)明的函數(shù)是內(nèi)聯(lián)函數(shù)。作用相當(dāng)于帶參數(shù)的宏。使用內(nèi)聯(lián)函數(shù)的必要性內(nèi)聯(lián)函數(shù)增加了代碼空間,但減少了執(zhí)行時(shí)間(函
4、數(shù)調(diào)用開銷)#includevoidmain(){charc;intisnumber(char);cout<<”Enteracharacter:”;cin>>c;if(isnumber(c))cout<<”Youenteredadigit.”elsecout<<”Youenteredanon-digit.”}intisnumber(charc){return(c>=’0’&&c<=’9’)?1:0;}對(duì)于isnumber這樣簡(jiǎn)單的函數(shù),使用函數(shù)調(diào)用的方法(特別是多次調(diào)用)將大大降低運(yùn)行效率,可以采用if((c>=’0’&&c<=’9’)?1:0)表達(dá)式替換的方法
5、。但是,手工替換很煩瑣,最好讓編譯程序去做。內(nèi)聯(lián)函數(shù)是程序行的擴(kuò)展,主要是解決程序的運(yùn)行效率?!?-2在較小范圍內(nèi)如何將C++增強(qiáng)C內(nèi)聯(lián)函數(shù)的使用(1)在函數(shù)聲明和定義的最前面加關(guān)鍵字inline在函數(shù)聲明時(shí)必須有inline,定義時(shí)可有可無(wú)。#includevoidmain(){charc;inlineintisnumber(char);……}inlineintisnumber(charc)//或用intisnumber(charc){return(c>=’0’&&c<=’9’)?1:0;}§2-2在較小范圍內(nèi)如何將C++增強(qiáng)C內(nèi)聯(lián)函數(shù)的使用(2)內(nèi)聯(lián)函數(shù)必須
6、在調(diào)用之前聲明或定義。因?yàn)閮?nèi)聯(lián)函數(shù)的代碼必須在被替換之前已經(jīng)生成被替換的代碼。#includeinlineintisnumber(charc){return(c>=’0’&&c<=’9’)?1:0;}voidmain(){charc;//inlineintisnumber(char);……}§2-2在較小范圍內(nèi)如何將C++增強(qiáng)C內(nèi)聯(lián)函數(shù)的函數(shù)體限制內(nèi)聯(lián)函數(shù)中不能含有復(fù)雜的結(jié)構(gòu)控制語(yǔ)句,否則,編譯時(shí)將該函數(shù)視同普通函數(shù)那樣產(chǎn)生函數(shù)調(diào)用代碼。遞歸函數(shù)是不能被用來(lái)做內(nèi)聯(lián)函數(shù)的。內(nèi)聯(lián)函數(shù)只適合于只有1~5行的小函數(shù),而且不能頻繁地被調(diào)用?!?-2在較小范圍
7、內(nèi)如何將C++增強(qiáng)C2.2.3函數(shù)重載使用重載函數(shù)的必要性在不同類型上作相同運(yùn)算而又用相同名字的情況,稱為重載。intadd(intx,inty){inttemp;temp=x+y;returntemp;}doubleadd(doublex,doubley){doubletemp;temp=x+y;returntemp;}main(){inta=4,b=5;doublex=12.5,y=75.75;cout<