c期末復(fù)習(xí)資料_第1頁
c期末復(fù)習(xí)資料_第2頁
c期末復(fù)習(xí)資料_第3頁
c期末復(fù)習(xí)資料_第4頁
c期末復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1、 面向?qū)ο笙嚓P(guān)概念:類:具有相同屬性和行為的對象集合,把數(shù)據(jù)和操作封裝在一起對象:數(shù)據(jù)+操作。面向?qū)ο筇卣鳎撼橄?,封裝,繼承,多態(tài)2、輸入輸出 :輸入cin>>a>>b; 輸入不能有endl 。 輸出 cout<<a<<b<<endl;3、 const 修飾符 :指向常量的指針:如 const char *p= ” abcd ” ; 不允許改變指針所指的常量,如 p3= x'是錯誤的,但是可以改變指針p的值p= "mn';是對的。常指針: char *const p =“abcd” ;指針本身是常量,不能

2、移動,但是所指內(nèi)容為變量,可以更改,如 p3= x 是對的。常數(shù)據(jù)成員,常成員函數(shù),常對象:在類中聲明的數(shù)據(jù)或函數(shù)可以是常量,對于常數(shù)據(jù)成員要用初始化列表初始值,在 C+鎂中,const關(guān)鍵字可以修飾對象和成員函數(shù),const 對象不能被修改, 一個常對象只能調(diào)用它的常成員函數(shù), 不能調(diào)用普通成員函數(shù)。常成員函數(shù)格式:類型說明符 函數(shù)名(參數(shù)表) const ;常成員函數(shù)可以參加重載。常成員函數(shù)不能更新對象的數(shù)據(jù)成員, 也不能調(diào)用該類中的普通成員函數(shù), const 成員 函數(shù)不能修改數(shù)據(jù)成員。4、內(nèi)聯(lián)函數(shù):在函數(shù)說明前冠以關(guān)鍵字inline ,目的是消除函數(shù)調(diào)用時的系統(tǒng)開銷,提高運行速度。注意

3、:內(nèi)聯(lián)函數(shù)體內(nèi)不能有循環(huán)語句和 switch 語句。內(nèi)聯(lián)函數(shù)的聲明必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前。類結(jié)構(gòu)中所有在類說明體內(nèi)定義的函數(shù)都是內(nèi)聯(lián)函數(shù)。5、帶有缺省參數(shù)值的函數(shù):在說明函數(shù)原型時,可以給一個或多個形參指定缺省值,調(diào)用時如給出實參,則采用實參值,否則采用預(yù)先給出的默認形參值。如某一個類point 的構(gòu)造函數(shù)原型為 point(int x=1, int y=0); 則參數(shù) x 和 y 的缺省值為 1 和 0.注意:在函數(shù)原型中,所有缺省值的參數(shù)都必須從右往左缺省,在函數(shù)調(diào)用時從左往右將實參與形參結(jié)合 , 如 point(int x=1, int y=0) X=x ; Y=y; , 那

4、么執(zhí)行 point p(3) 之后 p 的 X 和 Y 值分別為 3 , 0.6、函數(shù)重載:C+允許功能相近的函數(shù)在相同的作用域內(nèi)以相同函數(shù)名聲明,從而形成重 載。注意:重載函數(shù)的形參必須不同 : 個數(shù)不同或類型不同。編譯程序?qū)⒏鶕?jù)實參和形參的類型及個數(shù)的最佳匹配來選擇調(diào)用哪一個函數(shù)。例:void add(int m, int n) cout<< ” two integer numbers m+n= ” <<m+n<<endl; void add(float x,float y) cout<< ” two float numbers m+n= ”

5、 << m+n<<endl; int i=1,j=2;float f=1.0,d=2.0;add(i,j);add(f,d); 則前者調(diào)用第一個函數(shù),后者調(diào)用第二個函數(shù)輸出 two integer numbers m+n=3two float numbers m+n=3.07、引用:引用 (&) 是標識符的別名,例如 :int i;int &ri=i; / 建立一個 int 型的引用 ri,并將其初始化為變量i 的一個別名。注意: 聲明一個引用時,必須同時對它進行初始化,使它指向一個已存在的對象,不能聲明完成 后再賦值,如 int i;int &

6、ri;/ 錯誤 ri=i;一旦一個引用被初始化后,就不能改為指向其它對象。如:int i,j;int &ri=i;ri=&j;/錯誤引用可以作為形參作為傳地址調(diào)用,效果和指針一樣。 void swap(int& a, int& b) .引用與地址符的區(qū)別:引用運算符僅在聲明是帶有引用運算符&,以后就像使用普通變量一樣,其他場合使用&都是地址操作符8、作用域標識符( : ) 如果希望在局部變量的作用域內(nèi)使用同名的全局變量,在該變量前加上 : ,如 :a 代表全局變量。9、 new 和 delete運算符 new 用來內(nèi)存分配,最基本格式為:指針變量

7、=new 類型名;該語句在程序運行時從自由存儲區(qū)中為程序分配一類型名字節(jié)大小空間,該空間首地址被存于指針變量中。運算符delete用于釋放new分配的存儲空間,基本格式:delete指針名;說明:可以用new將分配的對象初始化,new和delete都可以重載。new 分配的空間使用結(jié)束后應(yīng)該也只能用 delete 顯式釋放,否則將不能回收而變成死空間使用 new 為數(shù)組動態(tài)分配內(nèi)存:指針變量=new 類型名 下標值 ; 如 int *p=newint10;釋放時: delete 指針變量名;如 delete p;new 可以為簡單變量分配內(nèi)存時同時進行初始化, 指針變量 =new 類型名 (初

8、始化列表) ;如 int *p=new int(10);10、類是一種用戶自定義類型,聲明形式:class 類名稱public:公有成員(外部接口)private:私有成員protected:保護型成員 ; 類成員中缺省訪問方式為私有公有類型成員:在關(guān)鍵字public 后面聲明,它們是類與外部的接口,任何外部函數(shù)都可以訪問公有類型數(shù)據(jù)和函數(shù)。私有類型成員:在關(guān)鍵字private 后面聲明,只允許本類中的函數(shù)訪問,而類外部的任何函數(shù)都不能訪問。 如果緊跟在類名稱的后面聲明私有成員,則關(guān)鍵字private 可以省略。保護類型:在類的定義中,說明為 protected 的數(shù)據(jù)成員稱為保護成員。保護數(shù)

9、據(jù)成員具有雙重作用:對于其派生類而言,是公有的,而對于其外部的程序而言,是私有的類的成員:成員數(shù)據(jù)與一般的變量聲明相同,但需要將它放在類的聲明體中。成員函數(shù)在類中說明原形,可以在類外給出函數(shù)體實現(xiàn),并在函數(shù)名前使用類名加以限定。也可以直接在類中給出函數(shù)體,形成內(nèi)聯(lián)成員函數(shù)。類的對象是該類的某一特定實體,即類類型的變量。聲明形式:類名 對象名; 例: Clock myClock;類中成員的訪問方式:類中成員互訪:直接使用成員名 類外訪問:使用“對象名 . 成員名”或“對象指針名 -> 成員名“方式訪問 public 屬性的成員11、構(gòu)造函數(shù)構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時使用特定的值構(gòu)造對象

10、,或者說將對象初始化為一個特定的狀態(tài)。特點:在對象創(chuàng)建時或new 類名時由系統(tǒng)自動調(diào)用。如果程序中未聲明,則系統(tǒng)自動產(chǎn)生出一個默認形式的構(gòu)造函數(shù),只有程序中定義有構(gòu)造函數(shù),系統(tǒng)不再自動生成缺省的構(gòu)造函數(shù)缺省構(gòu)造函數(shù)類名: :缺省構(gòu)造函數(shù)名() 函數(shù)名必須與類名相同不能指定函數(shù)返回類型參數(shù)可以有, 也可以無, 參數(shù)可以帶默認形參值, 所以一個類可以有多個構(gòu)造函數(shù),從而構(gòu)造函數(shù)可以重載。如有一個類 A,當執(zhí)彳T語句 A a ;時將自動調(diào)用該類的無 參構(gòu)造函數(shù)或缺省的構(gòu)造函數(shù)或帶默認形參值的構(gòu)造函數(shù),但無參構(gòu)造函數(shù)和帶默認形參值的構(gòu)造函數(shù)二者同時出現(xiàn)容易出現(xiàn)調(diào)用時引起二義性允許是內(nèi)聯(lián)函數(shù)利用構(gòu)造函數(shù)

11、創(chuàng)建對象有兩種方法:用構(gòu)造函數(shù)之間創(chuàng)建對象:類名 對象名 ( 實參表 ) ;如 point p ( 1 , 2) ;利用構(gòu)造函數(shù)創(chuàng)建對象時,通過指針和 new 來實現(xiàn):類名 * 指針變量 =new 類名 ( 實參表 ) ;如A *p=new A(1 , 2);注意類A聲明對象指針并不調(diào)用構(gòu)造函數(shù),而是通過 new 創(chuàng)建臨時對象調(diào)用構(gòu)造函數(shù),所以該語句只調(diào)用構(gòu)造函數(shù)1 次12、拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),其形參為本類的對象引用,作用是用已經(jīng)存在的對象初始化另一個同類的新對象。類名(類名&對象名);拷貝構(gòu)造函數(shù)如類A拷貝構(gòu)造函數(shù)為:A (A &x);拷貝構(gòu)造函數(shù)特

12、點:也是構(gòu)造函數(shù),所以其函數(shù)名與類名相同,沒有返回值只有一個參數(shù),并且是本類的對象引用,所以一個類只能有一個,不能重載每一個類都有一個拷貝構(gòu)造函數(shù),如果沒有定義,系統(tǒng)會自動生成一個缺省的調(diào)用拷貝構(gòu)造函數(shù)3 種情況:當用類的一個對象去初始化該類的另一個對象時系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)實現(xiàn)拷貝賦值。若函數(shù)的形參為類對象,調(diào)用函數(shù)時,實參賦值給形參,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)。當函數(shù)的返回值是類對象時,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)。深拷貝和淺拷貝:缺省的拷貝構(gòu)造函數(shù)所實現(xiàn)的數(shù)據(jù)成員逐一賦值就是淺拷貝,當類中有指針時,需要自定義拷貝構(gòu)造函數(shù),謂深拷貝。13、析構(gòu)函數(shù)完成對象被刪除前的一些清理工作。特點:析構(gòu)函

13、數(shù)與構(gòu)造函數(shù)名相同,但它前面必須加一個波浪號 析構(gòu)函數(shù)沒有返回值析構(gòu)函數(shù)沒有參數(shù),所以一個類中只能有一個析構(gòu)函數(shù),所以析構(gòu)函數(shù)不能重載當撤銷對象時,或delete 對象指針編譯系統(tǒng)自動調(diào)用析構(gòu)函數(shù)如果沒有定義析構(gòu)函數(shù),系統(tǒng)自動生成一個缺省的析構(gòu)函數(shù)類名: : 缺省析構(gòu)函數(shù)名() 14、成員初始化列表在聲明類時,不能在數(shù)據(jù)成員的聲明中對數(shù)據(jù)成員進行初始化,一般在構(gòu)造函數(shù)中用賦值語句進行,但對于內(nèi)嵌的對象、常量、引用數(shù)據(jù)成員需要在構(gòu)造函數(shù)的成員初始化列表中進行。帶有成員初始化列表的構(gòu)造函數(shù)一般格式:類名: :構(gòu)造函數(shù)名(參數(shù)表) : (成員初始化列表) 。 。 。 。 15、 this 指針 隱含

14、于每一個類的成員函數(shù)中的特殊指針。16、對象數(shù)組:類名 數(shù)組名 下標值 ;該數(shù)組中每個元素都是對象,都會自動調(diào)用構(gòu)造函數(shù),當數(shù)組中每一個對象被刪除時,系統(tǒng)都要調(diào)用一次析構(gòu)函數(shù)。訪問方法:數(shù)組名 下標 . 成員名17、對象指針:類名 * 對象指針名;定義對象指針不會調(diào)用構(gòu)造函數(shù)利用對象指針可以訪問單個對象成員,如point *p , ob; p=&ob; p->show();或作)和。亞();也可以用對象指針訪問對象數(shù)組,對象可以作為函數(shù)參數(shù),對象指針也可以18、指向類成員的指針:通過指向成員的指針只能訪問公有成員指向類的非靜態(tài)成員的指針指向公有數(shù)據(jù)成員的指針:類型說明符類名: :

15、 *數(shù)據(jù)成員指針名;說明指針應(yīng)該指向哪個成員:指針名=&類名: 數(shù)據(jù)成員名;通過對象名(或?qū)ο笾羔槪┡c成員指針結(jié)合來訪問數(shù)據(jù)成員: 對象名 .* 類成員指針名 或: 對象指針名 ->* 類成員指針名聲明指向公有函數(shù)成員的指針:類型說明符( 類名 :* 指針名 )( 參數(shù)表 ) ;初始化:指針名=類名: 函數(shù)成員名; 通過對象名 (或?qū)ο笾羔槪?與成員指針結(jié)合來訪問函數(shù)成員:(對象名 .* 類成員指針名 )( 參數(shù)表 )或: (對象指針名 ->* 類成員指針名 )( 參數(shù)表 ) 指向類的靜態(tài)成員的指針對類的靜態(tài)成員的訪問不依賴于對象,可以用普通的指針來指向和訪問靜態(tài)成員19、

16、靜態(tài)成員靜態(tài)數(shù)據(jù)成員用關(guān)鍵字 static 聲明,該類的所有對象維護該成員的同一個拷貝,必須在類外定義和初始化,用 (:) 來指明所屬的類。初始化格式:數(shù)據(jù)類型類名: :靜態(tài)數(shù)據(jù)成員名 =值;靜態(tài)數(shù)據(jù)屬于整個類,因此既可以通過某個對象,或?qū)ο笾羔樔ピL問,也可以使用類名: :靜態(tài)數(shù)據(jù)成員名格式去訪問它。靜態(tài)成員函數(shù)一般來說,靜態(tài)成員函數(shù)只能引用屬于該類的靜態(tài)數(shù)據(jù)成員或靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)沒有this 指針類外代碼可以使用類名和作用域操作符來調(diào)用靜態(tài)成員函數(shù)。如類名: :靜態(tài)成員函數(shù)名(實參表)或者對象。靜態(tài)成員函數(shù)名(實參表)或?qū)ο笾羔? 靜態(tài)成員函數(shù)名(實參表) 如某類A:class A

17、 private: static int totalW ; int w ; public:A (int m)w = m ;totalW +=m ;A ()totalW - =w ; static int getT () return totalW; ;int A: totalW =0;void main ()A al (50);cout <<A: getT () <<endl ;A a2 (100);cout << a2.getT () << endl ;20、友元友元是C+聯(lián)供的一種破壞數(shù)據(jù)封裝和數(shù)據(jù)隱藏的機制。提高程序運行效率友元函數(shù)不是當前

18、類的成員函數(shù),而是對立于當前類的外部函數(shù),它可以訪問該類的所有成員,包括公有,私有,受保護。友元函數(shù)不是類的成員,所以沒有this 指針,它不能直接引用對象成員的名字,它必須通過入口參數(shù)傳遞進來的對象名或?qū)ο笾羔榿硪迷搶ο蟮某蓡T。如某類 girl 的友元函數(shù) disp 格式: void disp(girl &g);友元成員一個類的成員函數(shù)作為另一個類的友元, 它既可以訪問本類的所有成員, 還可以訪問 friend 聲明所在類的所有成員友元類若一個類為另一個類的友元,則此類的所有成員都能訪問對方類的私有成員。友元關(guān)系是單向的,不具有交換性和傳遞性21、派生類繼承的目的:實現(xiàn)代碼重用。派

19、生的目的:當新的問題出現(xiàn),原有程序無法解決(或不能完全解決)時,需要對原有程序進行改造。 派生類的聲明class 派生類名:繼承方式 基類名 成員聲明;繼承方式:三種繼承方式( 省略默認為私有繼承 ) ,公有繼承,私有繼承,保護繼承不同繼承方式的影響主要體現(xiàn)在:內(nèi)部訪問:派生類成員對基類成員的訪問權(quán)限對象訪問:通過派生類對象對基類成員的訪問權(quán)限在派生類中能夠直接訪問的是基類的公有成員和保護成員公有繼承 (public)基類的 public 和 protected 成員的訪問屬性在派生類中保持不變, 但基類的 private 成員 不可直接訪問。派生類中的成員函數(shù)可以直接訪問基類中的 publi

20、c 和 protected 成員, 但不能直接訪問基類的 private 成員。通過派生類的對象只能訪問基類的 public 成員。私有繼承 (private)基類的 public 和 protected 成員都以 private 身份出現(xiàn)在派生類中, 但基類的 private 成 員不可直接訪問。派生類中的成員函數(shù)可以直接訪問基類中的 public 和 protected 成員, 但不能直接訪問基類的 private 成員。通過派生類的對象不能直接訪問基類中的任何成員。保護繼承 (protected)基類的 public 和 protected 成員都以 protected 身份出現(xiàn)在派生類

21、中,但基類的 private 成員不可直接訪問。派生類中的成員函數(shù)可以直接訪問基類中的 public 和 protected 成員, 但不能直接訪問基類的 private 成員。通過派生類的對象不能直接訪問基類中的任何成員22、類型兼容規(guī)則一個公有派生類的對象在使用上可以被當作基類的對象,反之則禁止。具體表現(xiàn)在:-派生類的對象可以被賦值給基類對象。一派生類的對象可以初始化基類的引用。寸旨向基類的指針也可以指向派生類。通過基類對象名、指針只能使用從基類繼承的成員23、多繼承時派生類的聲明class 派生類名:繼承方式 1 基類名1,繼承方式2 基類名 2 , .成員聲明;注意:每一個 “繼承方式

22、” ,只用于限制對緊隨其后之基類的繼承。24、繼承時的構(gòu)造函數(shù)基類的構(gòu)造函數(shù)不被繼承,派生類中需要聲明自己的構(gòu)造函數(shù)。聲明構(gòu)造函數(shù)時,只需要對本類中新增成員進行初始化,對繼承來的基類成員的初始化,自動調(diào)用基類構(gòu)造函數(shù)完成。派生類的構(gòu)造函數(shù)需要給基類的構(gòu)造函數(shù)傳遞參數(shù),要看具體情況在類繼承過程中,當基類只有帶默認值的有參構(gòu)造函數(shù)時,派生類的構(gòu)造函數(shù)可能為:默認構(gòu)造函數(shù),不帶參數(shù)構(gòu)造函數(shù),帶參數(shù)構(gòu)造函數(shù);當基類只有不帶默認值的有參構(gòu)造函數(shù)時,派生類必須有構(gòu)造函數(shù)單一繼承時的構(gòu)造函數(shù)派生類名 : 派生類名 (基類所需的形參,本類成員所需的形參 ): 基類名 (參數(shù)表 )本類成員初始化賦值語句;多繼承

23、且有內(nèi)嵌對象時的構(gòu)造函數(shù)派生類名二派生類名(基類1形參,基類2形參,基類n形參,本類形參):基類名1(參數(shù)),基類名2(參數(shù)), 基類名n(參數(shù)),內(nèi)嵌對象數(shù)據(jù)成員的初始化本類成員初始化賦值語句;構(gòu)造函數(shù)的調(diào)用次序1 調(diào)用基類構(gòu)造函數(shù),調(diào)用順序按照它們被繼承時聲明的順序(從左向右)。2 調(diào)用內(nèi)嵌成員對象的構(gòu)造函數(shù),調(diào)用順序按照它們在類中聲明的順序。3 派生類的構(gòu)造函數(shù)體中的內(nèi)容。25、繼承時的析構(gòu)函數(shù)析構(gòu)函數(shù)也不被繼承,派生類自行聲明聲明方法與一般(無繼承關(guān)系時)類的析構(gòu)函數(shù)相同。不需要顯式地調(diào)用基類的析構(gòu)函數(shù),系統(tǒng)會自動隱式調(diào)用。析構(gòu)函數(shù)的調(diào)用次序與構(gòu)造函數(shù)相反。26、虛基類用于有共同基類的

24、場合以 virtual 修飾說明基類例: class B1:virtual public B27、多態(tài)多態(tài)的分類:參數(shù)多態(tài),包含多態(tài),重載多態(tài)和強制多態(tài)多態(tài)的實現(xiàn):函數(shù)模板和類模板,虛函數(shù),函數(shù)重載、運算符重載虛函數(shù)虛函數(shù)是動態(tài)綁定的基礎(chǔ),實現(xiàn)多態(tài)的重要手段。定義在基類中進行,在類的聲明中,在函數(shù)原型之前寫 virtual 。virtual 只用來說明類聲明中的原型,不能用在函數(shù)實現(xiàn)時。具有繼承性,基類中聲明了虛函數(shù),派生類中無論是否說明,同原型函數(shù)都自動為虛函數(shù)。在派生類中重新定義時,其函數(shù)原型都必須和基類中的原型完全相同。調(diào)用方式:通過基類指針或引用,執(zhí)行時會根據(jù)指針指向的對象的類,決定調(diào)用哪個函數(shù)。不能是友元函數(shù),不能是靜態(tài)成員函數(shù);不能是內(nèi)聯(lián)函數(shù);不能是構(gòu)造函數(shù);可以是析構(gòu)函數(shù)。要求會分析具有虛函數(shù)的程序運行結(jié)果純虛函數(shù)是在基類中說明的虛函數(shù),它在該基類中沒有定義,但要求在它的派生類中必須定義自己的版本,或重新說明為純虛函數(shù):virtual 函數(shù)類型 函數(shù)名 (參數(shù)表 )=0;聲明為純虛函數(shù)后在基類中就不再給出函數(shù)實現(xiàn)部分,函數(shù)體有派生類給出。帶有純虛函數(shù)的類稱為抽象類:不能聲明抽象類的

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論