C++語言程序設(shè)計期末總結(jié).doc_第1頁
C++語言程序設(shè)計期末總結(jié).doc_第2頁
C++語言程序設(shè)計期末總結(jié).doc_第3頁
C++語言程序設(shè)計期末總結(jié).doc_第4頁
C++語言程序設(shè)計期末總結(jié).doc_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

C+程序設(shè)計總結(jié):1. C與C+的區(qū)別:引入類和對象,成為面向?qū)ο蟮某绦蛟O(shè)計語言一、類 二、引用三、函數(shù)的重載四、流操作符五、操作符重載六、繼承,以及虛函數(shù)參考(C是一個結(jié)構(gòu)化語言:它的重點在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計首要考慮的是如何通過一個過程,對輸入(或環(huán)境條件)進行運算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制),而對于C+,首要考慮的是如何構(gòu)造一個對象模型,讓這個模型能夠契合與之對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C+的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說C+比C更先進,是因為“ 設(shè)計這個概念已經(jīng)被融入到C+之中 ”,而就語言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯!算法是程序設(shè)計的基礎(chǔ),好的設(shè)計如果沒有好的算法,一樣不行。而且,“C加上好的設(shè)計”也能寫出非常好的東西。 對語言本身而言,C是C+的子集,那么是什么樣的一個子集?從上文可以看出, C實現(xiàn)了C+中過程化控制及其它相關(guān)功能,而在C+中的C(我稱它為“C+”),相對于原來的C還有所加強,引入了重載、內(nèi)聯(lián)函數(shù)、異常處理等等玩藝兒,C+更是拓展了面向?qū)ο笤O(shè)計的內(nèi)容,如類、繼承、虛函數(shù)、模板和包容器類等等。 再提高一點,在C+中,數(shù)據(jù)封裝、類型這些東東已不是什么新鮮事了,需要考慮的是諸如:對象粒度的選擇、對象接口的設(shè)計和繼承、組合與繼承的使用等等問題。 所以相對于C,C+包含了更豐富的“設(shè)計”的概念,但C是C+的一個自洽子集,也具有強大的功能,同樣值得學(xué)習(xí)。)l *全面兼容C 它保持了C的簡潔、高效和接近匯編語言等特點 對C的類型系統(tǒng)進行了改革和擴充 C+也支持面向過程的程序設(shè)計,不是一個純正的面向?qū)ο蟮恼Z言l 支持面向?qū)ο蟮姆椒?. 友元函數(shù) 友元函數(shù)在類中用 friend 修飾的非成員函數(shù),在其函數(shù)體中可以通過對象名訪問類的 Private和protected成員。l 作用:增加靈活性,使程序員可以在封裝和快速性方面做合理選擇。l 訪問對象中的成員必須通過對象名。 友元類: 若A類為B類的友元類,則A類的所有成員函數(shù)都是B類的友元函數(shù), 都可以訪問B類的私有和保護成員。 語法形式: class B /B類中成員函數(shù)聲明 friend class A; /聲明A為B的友元類 ; 注意:(1. 友元關(guān)系是不能傳遞的 2. 友元關(guān)系是單向的 3. 友元關(guān)系是不被繼承的。)3. 重載 哪些運算符不能重載:類屬關(guān)系運算符“.”,成員指針運算符“.*”,作用域分辨符“:”,三目運算符“?:”。運算符重載的兩種形式:重載為類的非靜態(tài)成員函數(shù)(函數(shù)只有一個形參)和重載為非成員函數(shù)(函數(shù)的形參有兩個)。*運算符重載 成員與非成員 之間的差異:如何實現(xiàn)差異:308至315頁 例8-1、8-2、8-3*4. 繼承(實現(xiàn)代碼重用)與派生類的繼承方式:公有繼承、私有繼承、保護繼承。繼承:公有繼承(public):(1) 基類的public和protected成員的訪問屬性在派生類中保持不變,但基類的private成員不可直接訪問。(2) 派生類中的成員函數(shù)可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員。(3) 通過派生類的對象只能訪問基類的public成員。私有繼承(private):l 基類的public和protected成員都以private身份出現(xiàn)在派生類中,但基類的private成員不可直接訪問。l 派生類中的成員函數(shù)可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員。l 通過派生類的對象不能直接訪問基類中的任何成員保護繼承(protected):l 基類的public和protected成員都以protected身份出現(xiàn)在派生類中,但基類的private成員不可直接訪問。l 派生類中的成員函數(shù)可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員。l 通過派生類的對象不能直接訪問基類中的任何成員5. 拷貝構(gòu)造函數(shù)(無返回類型110113)l 構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時使用特定的值構(gòu)造對象,或者說將對象初始化為一個特定的狀態(tài)。l 在對象創(chuàng)建時由系統(tǒng)自動調(diào)用。l 如果程序中未聲明,則系統(tǒng)自動產(chǎn)生出一個隱含的參數(shù)列表為空的構(gòu)造函數(shù)l 允許為內(nèi)聯(lián)函數(shù)、重載函數(shù)、帶默認(rèn)形參值的函數(shù)l 拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),其形參為本類的對象引用??截悩?gòu)造函數(shù)被調(diào)用的情況:l 當(dāng)用類的一個對象去初始化該類的另一個對象時系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)實現(xiàn)拷貝賦值。l 若函數(shù)的形參為類對象,調(diào)用函數(shù)時,實參賦值給形參,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)。l 當(dāng)函數(shù)的返回值是類對象時,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)。方法:class 類名 public: 類名(形參表); /構(gòu)造函數(shù) 類名(類名&對象名); /復(fù)制構(gòu)造函數(shù) /各成員函數(shù);類名:類名(類名&對象名); /復(fù)制構(gòu)造函數(shù)的實現(xiàn) 函數(shù)體例題:class Pointpublic: Point(int xx=0,int yy=0) /構(gòu)造函數(shù) x=xx; y=yy;Point(Point&p); /復(fù)制構(gòu)造函數(shù)int getX( ) return x;int getY( ) return y;private: int x,y;/復(fù)制構(gòu)造函數(shù)的實現(xiàn)Point:Point(Point&p) x=p.x; y=p.y; cout“”成員名ptr-getx() 相當(dāng)于 (*ptr).getx();21. 常引用(166167) 常引用:聲明時用const修飾的引用。 常引用所引用的對象不能被更新。22. 指向?qū)ο蟮某V羔槼n愋停撼n愋偷膶ο蟊仨氝M行初始化,而且不能被更新。l 常對象:必須進行初始化,不能被更新。const 類名 對象名l 常引用:被引用的對象不能被更新。const 類型說明符 &引用名l 常數(shù)組:數(shù)組元素不能被更新類型說明符 const 數(shù)組名大小.l 常指針:指向常量的指針關(guān)于指針類型,應(yīng)注意:(1) 指向常量的指針,不能通過指針來改變所指對象的值,但指針本身可以改變,可以指向另外的對象。int a;const int *p1=&a; /p1是指向常量的指針int b;p1=&b; /正確。 P1本身的值可以改變*p1=1; /出錯。 不能通過p1改變所指的對象(2) 指針類型的常量,指針本身的值不能被改變。int * const p2=&a;p2=&b; /錯誤。P2是指針常量,值不能改變。 23. const的用法 通過指針是哪些值不能修改的用法:const 的使用const經(jīng)常用來修飾一個值不能改變的量,安全,并且能消除存儲操作const的幾種用法:(1)說明值常量(2)說明指針(3)說明函數(shù)參數(shù)及其返回值(4)說明類的常量和成員函數(shù)const 說明值常量值常量的說明一般放在頭文件或者文件的開始部分,也可以放在類中進行說明(1)說明符號常量,表明符號代表的是一個常量,語法:const=,=例如:double const PI=3.14; const double PI=3.14;(2)說明數(shù)組常量,語法格式:const大小=初值表;const類型 大小=初值表;(3)說明對象常量,語法格式:const;const ;(4)說明引用常量(5)const與C語言中的#define的差別無參宏不是符號常量,沒有數(shù)據(jù)類型,沒有值,在內(nèi)存中不分配地址。它在預(yù)處理時做宏替換,不可能做類型檢查。const定義的常量是符號常量,有數(shù)據(jù)類型,也有值,且其值不可改變,在內(nèi)存中有地址,編譯時做類型檢查。Const和指針Const和指針的三種經(jīng)典組合(1)指向常量的指針const int *p;(2)常指針char *const pc=a;(3)指向常量的常指針const char *const pc=a指向常量的指針(指針指向一個不可變量)指針在指向有一個常量后,不能通過指針修改這個常量,但是可以指向一個新的常量,例如:Const char *pc=”ABCD”;Pc3=a;不合法,企圖修改原來指向的常量Pc=“WERT”;合法指向另外一個常量常指針要把指針變量中的值(也就是地址)聲明為常量,采用以下語法:*const=;這樣定義的指針變量中存放的指針是個常量,稱為常指針。定義后,該指針指向固定的內(nèi)存單元,不能再指向其他內(nèi)存單元,通過它可以修改所指單元里存放的內(nèi)容。例如:Char *const pc=”ABCD”;Pc3=a;合法,指針指向的對象可以修改Pc=”QWER”;不可以,指針的指向不可以修改指向常量的常指針指針變量中存放的指針本身和指針?biāo)赶虻膶ο蠖际遣豢梢愿淖兊?。例如:Const char *const pc=”ASDF”;Pc3=a;不合法,不能改變指針?biāo)笇ο蟮闹礟c=”QWER”;不合法,不能改變指針的指向Const說明函數(shù)參數(shù)和返回值用const限定函數(shù)參數(shù)和返回值,是const最重要的用法。用const修飾函數(shù)參數(shù)意味著傳過來的實參在函數(shù)中是不能被修改的。一般情況下不需要,但是在用指針和引用傳值的場合,為避免實參被修改,就用const修飾,更安全。修飾函數(shù)的返回值,意味著該返回值不能被修改。如果傳值并返回地址,const將保證該地址上的內(nèi)容不會被改變。這就意味著該函數(shù)不能作為左值使用,在這種情況下,const通常也是與引用和指針一起使用的。類中的const1.常成員的函數(shù)2.常數(shù)據(jù)成員3.常對象通過指針是哪些值不能修改的?24. 函數(shù)模版:函數(shù)模板:l 函數(shù)模板可以用來創(chuàng)建一個通用功能的函數(shù),以支持多種不同形參,進一步簡化重載函數(shù)的函數(shù)體設(shè)計。l 定義方法:template 函數(shù)定義l 模板參數(shù)表的內(nèi)容 類型參數(shù):class(或typename) 標(biāo)識符 常量參數(shù):類型說明符 標(biāo)識符 模板參數(shù):template class 標(biāo)識符25. 作用域:(146149)作用域:(若全局變量與局部變量同名,則局部變量起作用)函數(shù)原型作用域:函數(shù)原型中的參數(shù),其作用域始于(,結(jié)束于)局部作用域:函數(shù)的形參,在塊中聲明的標(biāo)識符,其作用域自聲明處起,限于塊中,類作用域:l 類作用域作用于特定的成員名。l 類X的成員m具有類作用域,對m的訪問方式如下: 如果在X的成員函數(shù)中沒有聲明同名的局部作用域標(biāo)識符,那么在該函數(shù)內(nèi)可以訪問成員m。 通過表達式x.m或者X:m訪問。 通過表達式ptr-M26. 對象的隱藏 ?27. 通過指針訪問類的成員函數(shù)和數(shù)據(jù)成員派生類的對象訪問基類*28. 兼容性規(guī)則:兼容性規(guī)則:l 一個公有派生類的對象在使用上可以被當(dāng)作基類的對象,反之則禁止。具體表現(xiàn)在: 派生類的對象可以隱含轉(zhuǎn)換為基類對象。 派生類的對象可以初始化基類的引用。 派生類的指針可以隱含轉(zhuǎn)換為基類的指針。l 通過基類對象名、指針只能使用從基類繼承的成員29. 內(nèi)聯(lián)函數(shù):內(nèi)聯(lián)函數(shù)的引用和聲明:l 聲明時使用關(guān)鍵字 inline。l 編譯時在調(diào)用處用函數(shù)體進行替換,節(jié)省了參數(shù)傳遞、控制轉(zhuǎn)移等開銷。l 注意: 內(nèi)聯(lián)函數(shù)體內(nèi)不能有循環(huán)語句和switch語句。 內(nèi)聯(lián)函數(shù)的聲明必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前。 對內(nèi)聯(lián)函數(shù)不能進行異常接口聲明30. 析構(gòu)函數(shù):析構(gòu)函數(shù):l 完成對象被刪除前的一些清理工作。l 在對象的生存期結(jié)束的時刻系統(tǒng)自動調(diào)用它,然后再釋放此對象所屬的空

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論