![com組件C語言基礎(chǔ)_第1頁](http://file4.renrendoc.com/view/0d646609061fa53508026e39e3f65963/0d646609061fa53508026e39e3f659631.gif)
![com組件C語言基礎(chǔ)_第2頁](http://file4.renrendoc.com/view/0d646609061fa53508026e39e3f65963/0d646609061fa53508026e39e3f659632.gif)
![com組件C語言基礎(chǔ)_第3頁](http://file4.renrendoc.com/view/0d646609061fa53508026e39e3f65963/0d646609061fa53508026e39e3f659633.gif)
![com組件C語言基礎(chǔ)_第4頁](http://file4.renrendoc.com/view/0d646609061fa53508026e39e3f65963/0d646609061fa53508026e39e3f659634.gif)
![com組件C語言基礎(chǔ)_第5頁](http://file4.renrendoc.com/view/0d646609061fa53508026e39e3f65963/0d646609061fa53508026e39e3f659635.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C++Overview潘愛民panaimin@/CompCourse/內(nèi)容簡介C++語言基礎(chǔ)Object-BasedProgrammingObject-OrientedProgrammingSTLC++之我見C++語言在變化,我們的概念也要調(diào)整變化最能反映OO思想的語言,掌握C++有助于理解OO區(qū)分C和C++,C++不是C語言,不要用看待C語言的方式來看待C++掌握C++語言的基礎(chǔ)知識(shí)操作系統(tǒng)的基礎(chǔ)知識(shí)文件API、內(nèi)存管理…infrastructures計(jì)算機(jī)原理匯編語言C/C++是產(chǎn)生ASM代碼的framework編譯和執(zhí)行過程編譯過程執(zhí)行過程許多概念進(jìn)程、heap、stack,...程序開發(fā)過程開發(fā)編輯編譯出錯(cuò)?鏈接執(zhí)行結(jié)果正確?結(jié)束源程序file.cpp目標(biāo)程序file.obj庫函數(shù)和其它OBJ可執(zhí)行程序file.exeYesYesNoNoBuild過程:compiletimeCompile+link如何對(duì)待錯(cuò)誤和警告錯(cuò)誤:一定要排除,從第一個(gè)錯(cuò)誤找起警告:或者排除,或者確實(shí)理解不會(huì)對(duì)程序造成危害學(xué)會(huì)設(shè)置compileoptions和linkoptionsIDE中如何設(shè)置?——一定要知道!命令行如何設(shè)置?程序代碼中如何設(shè)置?執(zhí)行過程:runtimeLoad、重定位、初始化、main如何調(diào)試斷點(diǎn)assertion程序?qū)Νh(huán)境的依賴性系統(tǒng)環(huán)境CRT內(nèi)存影像C++語言內(nèi)容數(shù)據(jù)類型內(nèi)置(built-in)、標(biāo)準(zhǔn)庫、自定義的表達(dá)式控制語句函數(shù)(模板)異常處理函數(shù)模板例子:template<classType>Typemin(Typea,Typeb){ returna<b?a:b;}min(10,20);min(10.0,20.0);模板實(shí)例化——由參數(shù)決定隱式實(shí)例化顯式實(shí)例化min<int>(10,20);函數(shù)模板(續(xù))兩種編譯模式:inclusion模式separation模式(export關(guān)鍵字)模板特化重載函數(shù)模板異常處理(exceptionhandling)錯(cuò)誤處理機(jī)制、錯(cuò)誤代碼隔離Throw(raise)anexceptionThrowexpression類似于return語句Try、catch語句(handler)try{}catch(type){}或catch(typeobj){}類似于函數(shù)調(diào)用但是類型匹配發(fā)生在runtime異常處理(續(xù))嵌套機(jī)制,如果最外層沒有處理,則由terminate來處理Localobject正常析構(gòu)rethrow在catch子句中仍然可以throwCatchallhandlercatch(…)聲明函數(shù)時(shí)指定函數(shù)可能的異常intfunc(int)throw(string);如果沒有指定的異常發(fā)生,調(diào)用unexpected()Object-BasedProgrammingclass實(shí)現(xiàn)數(shù)據(jù)封裝對(duì)象構(gòu)造函數(shù)與析構(gòu)函數(shù)訪問控制、友元嵌套類類中成員初始化虛擬函數(shù)類中運(yùn)算符重載類模板this指針在類的內(nèi)部指向類自身的指針在每個(gè)成員函數(shù)中,this指針提供了使用上的方便this指針把類的多個(gè)實(shí)例對(duì)象區(qū)分開來模板函數(shù)模板
即以數(shù)據(jù)類型為“參數(shù)”的函數(shù)例如:
template<classT>Swap( T&a,T&b){Ttemp;temp=a;a=b;b=temp;}類模板(模板類或類生成器)
即以數(shù)據(jù)類型為“參數(shù)”的類例如:
template<classT>classStack{private:Tpool[maxNum];
intsp;public:Stack();voidPush(Tx);TPop();BOOLIsEmpty()const;BOOLIsFull()const;};
使用:
Stack<int>intStack;Stack<float>floatStack;模板(續(xù))定義模板實(shí)例化模板參數(shù):類型參數(shù)、非類型參數(shù)兩種編譯模式:inclusion模式separation模式(export關(guān)鍵字)類模板特化(classtemplatespecializations)類模板部分特化(classtemplatepartialspecializations)從面向過程轉(zhuǎn)換到面向?qū)ο竺嫦蜻^程以功能為組織單元在C語言中以函數(shù)作為功能單元;通過數(shù)據(jù)結(jié)構(gòu)來描述具體的問題;數(shù)據(jù)在功能(函數(shù))之間以參數(shù)的形式被傳送。
面向?qū)ο笥妙恈lass封裝數(shù)據(jù)以及與數(shù)據(jù)相關(guān)的操作;用類的繼承性來實(shí)現(xiàn)類的重用性;多態(tài)性。Object-OrientedProgrammingCShapeCPointCLineCCircleCArcCTextCShapeCPointCLineCCircleCArcCText多態(tài)性和虛擬函數(shù)多態(tài)性是面向?qū)ο蟮囊粋€(gè)支柱
允許程序在實(shí)施對(duì)象的操作時(shí),允許對(duì)象按不同的方式完成不同類型對(duì)象的操作;不同類型對(duì)象有自己實(shí)現(xiàn)操作的方法。虛擬函數(shù)虛擬函數(shù)實(shí)現(xiàn)了多態(tài)性。說明:在函數(shù)說明之前加上關(guān)鍵字virtual在基類的說明中,定義虛擬函數(shù):
virtualvoidDisplay();調(diào)用:
CShape*pShape=GetCurrentShape();
pShape->Display();對(duì)象的內(nèi)存分布圖Vptr指針和vtab表classA{private:
intvalue;public:virtualvoidFunc1(void)virtualvoidFunc2(void)};變量偏移量vptr0value4A::Func1A::Func2vtab對(duì)象的內(nèi)存分布圖(續(xù)一)classB:pulicA{private:
intvalue1;public:virtualvoidFunc1(void)virtualvoidFunc2(void)};變量偏移量vptr0value4value18B::Func1B::Func2vtab對(duì)象的內(nèi)存分布圖(續(xù)二)classB:pulicA{private:
intvalue1;public:virtualvoidFunc1(void)};變量偏移量vptr0value4value18B::Func1A::Func2vtab繼承關(guān)系Public繼承“is-a”關(guān)系private繼承“has-a”關(guān)系可以用復(fù)合類或者嵌套類來表示protected繼承比private繼承放寬限制virtual繼承單個(gè)共享實(shí)例虛基類的構(gòu)造由themostderivedclass完成類型轉(zhuǎn)換Static_castDynamic_cast向下轉(zhuǎn)換voidDraw(CShape*shape){ //shape->DrawRect() //shape->DrawCircle() if(dynamic_cast<CRect*>(shape)){…}}RTTI:typeidStatic_cast類型轉(zhuǎn)換classB{...};classD:publicB{...};voidf(B*pb,D*pd){D*pd2=static_cast<D*>(pb);//notsafe,pbmay//pointtojustBB*pb2=static_cast<B*>(pd);//safeconversion...}Static_cast類型轉(zhuǎn)換(續(xù))classB{...};classD:publicB{...};voidf(B*pb){D*pd1=dynamic_cast<D*>(pb);D*pd2=static_cast<D*>(pb);}C++標(biāo)準(zhǔn)庫C標(biāo)準(zhǔn)庫iostreamlibrarycin、cout、cerrostream&operator<<(ostream&os,constMyClass)istream&operator>>(istream&os,MyClass&)STL(StandardTemplateLibrary)GenericProgramming作者:AlexanderStepanov目標(biāo):高效、靈活地實(shí)現(xiàn)各種算法思想:對(duì)算法進(jìn)行抽象,與數(shù)據(jù)表示分開以模板技術(shù)為基礎(chǔ)函數(shù)模板類模板C++的發(fā)展使得這種思想得以實(shí)現(xiàn)STL基礎(chǔ)Object-BasedProgramming有關(guān)class的各種設(shè)計(jì)技術(shù)函數(shù)對(duì)象(functionobjects)重載了函數(shù)調(diào)用操作符()的類模板函數(shù)模板類模板模板特化STL思想數(shù)據(jù)類型算法容器STL實(shí)現(xiàn)Iterator對(duì)象容器(Container)算法(Algorithm)Iterator對(duì)象Iterator對(duì)象STL容器順序容器(SequenceContainer)vectordequelist關(guān)聯(lián)容器(AssociativeContainer)setmultisetmapmultisetSTL迭代器迭代器(Iterator)是指針(pointer)的泛化任意訪問雙向迭代器向前迭代器輸入迭代器輸出迭代器STL算法改變順序的操作reverse、replace不改變順序的操作for_each、find排序及相關(guān)操作sort、rotate常用的數(shù)字操作count、sum_up使用STL#include<functional>#include<list>#include<iostream>#include<algorithm>usingnamespacestd;template<typenameT>voidprint_elements(Telem){cout<<elem<<"";}void(*pfi)(int)=print_elements;voidmain(){
intia[7]={0,1,2,3,4,5,6}; list<int>ilist(ia,ia+7); //以陣列做為list的初值 for_each(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度法律服務(wù)團(tuán)隊(duì)聘用合同范本下載
- 2025年度音樂噴泉與音響系統(tǒng)集成項(xiàng)目合同
- 知識(shí)產(chǎn)權(quán)教育實(shí)踐活動(dòng)計(jì)劃
- 科技創(chuàng)新應(yīng)用推廣工作方案計(jì)劃
- 學(xué)期后勤保障與支持計(jì)劃
- 2025年物位儀合作協(xié)議書
- 培養(yǎng)小學(xué)生的公民道德責(zé)任計(jì)劃
- 制定年度客戶滿意度提升計(jì)劃
- 如何構(gòu)建長效的職業(yè)發(fā)展體系計(jì)劃
- 校園美術(shù)文化建設(shè)方案計(jì)劃
- 30道醫(yī)院婦產(chǎn)科醫(yī)生崗位高頻面試問題附考察點(diǎn)及參考回答
- 21中華文化-2023年中考英語新熱點(diǎn)時(shí)文閱讀
- 卷內(nèi)目錄范例模板
- 學(xué)校課程整體框架圖
- 環(huán)境衛(wèi)生學(xué)第二章 環(huán)境與健康的關(guān)系
- 2024屆高考語文復(fù)習(xí):小說閱讀之?dāng)⑹马樞蚺c敘事節(jié)奏
- 新生兒肺透明膜病的影像與臨床探討
- 動(dòng)力觸探檢測報(bào)告超重型圓錐動(dòng)力觸探試驗(yàn)
- 職業(yè)素養(yǎng)的內(nèi)容(含事例)課件
- 工藝美術(shù)專業(yè)-工藝品設(shè)計(jì)課程標(biāo)準(zhǔn)
- 環(huán)衛(wèi)市場化運(yùn)營方案PPT
評(píng)論
0/150
提交評(píng)論