全國計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)知識(shí)點(diǎn)匯總_第1頁
全國計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)知識(shí)點(diǎn)匯總_第2頁
全國計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)知識(shí)點(diǎn)匯總_第3頁
全國計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)知識(shí)點(diǎn)匯總_第4頁
全國計(jì)算機(jī)二級(jí)C++考試復(fù)習(xí)知識(shí)點(diǎn)匯總_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、完美WORD格式2017年全國計(jì)算機(jī)二級(jí)C+考試復(fù)習(xí)知識(shí)點(diǎn)匯總一、C+概述(一)發(fā)展歷史1980年,Bjarne Stroustrup博士開始著手創(chuàng)建一種模擬語言, 能夠具有面 向?qū)ο蟮某绦蛟O(shè)計(jì)特色。在當(dāng)時(shí),面向?qū)ο缶幊踢€是一個(gè)比較新的理念,Stroustrup博士并不是從頭開始設(shè)計(jì)新語言,而是在 C語言的基礎(chǔ)上進(jìn)行創(chuàng)建。這就 是C+語百。1985年,C+開始在外面慢慢流行。經(jīng)過多年的發(fā)展, C+已經(jīng)有了多個(gè) 版本。為次,ANSI和ISO的聯(lián)合委員會(huì)于1989年著手為C+制定標(biāo)準(zhǔn)。1994 年2月,該委員會(huì)出版了第一份非正式草案,1998年正式推出了 C+的國際標(biāo) 準(zhǔn)。(二)C 和 C+C+是

2、C的超集,也可以說C是C+的子集,因?yàn)镃先出現(xiàn)。按常理說, C+編譯器能夠編譯任何 C程序,但是C和C+還是有一些小差別。例如C+增加了 C不具有的關(guān)鍵字。這些關(guān)鍵字能作為函數(shù)和變量的標(biāo)識(shí) 符在C程序中使用,盡管C+包含了所有的C,但顯然沒有任何C+編譯器能 編譯這樣的C程序。C程序員可以省略函數(shù)原型,而 C+不可以,一個(gè)不帶參數(shù)的 C函數(shù)原型 必須把void寫出來。而C+可以使用空參數(shù)列表。整理分享完美WORD格式C+中new和delete是對內(nèi)存分配的運(yùn)算符,取代了 C中的malloc和 free。標(biāo)準(zhǔn)C+中的字符串類取代了 C標(biāo)準(zhǔn)C函數(shù)庫頭文件中的字符數(shù)組處理函 數(shù)。C+中用來做控制態(tài)輸

3、入輸出的iostream 類庫替代了標(biāo)準(zhǔn)C中的stdio函 數(shù)庫。C+中的try/catch/throw異常處理機(jī)制取代了標(biāo)準(zhǔn) C中的setjmp()和longjmp()函數(shù)。二、關(guān)鍵字和變量C+相對與C增加了一些關(guān)鍵字,如下:typename bool dynamic_cast mutable namespacestatic_cast using catch explicit newvirtual operator false private templatevolatile const protected this wchar_tconst_castpublic throw friend

4、truereinterpret_cast trybitor xor_e and_eq compl or_eqnot_eq bitand整理分享完美WORD格式在C+中還增加了 bool型變量和wchar_t型變量:布爾型變量是有兩種邏輯狀態(tài)的變量,它包含兩個(gè)值:真和假。如果在表達(dá) 式中使用了布爾型變量,那么將根據(jù)變量值的真假而賦予整型值1或00要把一個(gè)整型變量轉(zhuǎn)換成布爾型變量,如果整型值為0,則其布爾型值為假;反之如果整 型值為非0,則其布爾型值為真。布兒型變量在運(yùn)行時(shí)通常用做標(biāo)志,比如進(jìn)行 邏輯測試以改變程序流程。#include iostream.hint main()bool flag;

5、flag=true;if(flag) cout return 0;C+中還包括wchar_t數(shù)據(jù)類型,wchar_t也是字符類型,但是是那些寬 度超過8位的數(shù)據(jù)類型。許多外文字符集所含的數(shù)目超過256個(gè),char字符類型無法完全囊括。wchar_t數(shù)據(jù)類型一般為16位。標(biāo)準(zhǔn)C+的iostream 類庫中包括了可以支持寬字符的類和對象。用 wout 替代cout即可。整理分享完美WORD格式#include iostream.hint main()(wchar_t wc;wc=b;wout wc=y;wout wc=e;wout return 0;說明一下:某些編譯器無法編譯該程序(不支持該數(shù)據(jù)

6、類型)。三、強(qiáng)制類型轉(zhuǎn)換有時(shí)候,根據(jù)表達(dá)式的需要,某個(gè)數(shù)據(jù)需要被當(dāng)成另外的數(shù)據(jù)類型來處理,這時(shí),就需要強(qiáng)制編譯器把變量或常數(shù)由聲明時(shí)的類型轉(zhuǎn)換成需要的類型。為此,就要使用強(qiáng)制類型轉(zhuǎn)換說明,格式如下:int* iptr=(int*) &table;表達(dá)式的前綴(int*)就是傳統(tǒng)C風(fēng)格的強(qiáng)制類型轉(zhuǎn)換說明(typecast),又可 稱為強(qiáng)制轉(zhuǎn)換說明(cast)。強(qiáng)制轉(zhuǎn)換說明告訴編譯器把表達(dá)式轉(zhuǎn)換成指定的類 型。有些情況下強(qiáng)制轉(zhuǎn)換是禁用的,例如不能把一個(gè)結(jié)構(gòu)類型轉(zhuǎn)換成其他任何類整理分享完美WORD格式型。數(shù)字類型和數(shù)字類型、指針和指針之間可以相互轉(zhuǎn)換。當(dāng)然,數(shù)字類型和指 針類型也可以相互轉(zhuǎn)換,但通常

7、認(rèn)為這樣做是不安全而且也是沒必要的。強(qiáng)制類型轉(zhuǎn)換可以避免編譯器的警告。long int el=123;short i=(int) el;float m=34.56;int i=(int) m;上面兩個(gè)都是C風(fēng)格的強(qiáng)制類型轉(zhuǎn)換,C+還增加了一種轉(zhuǎn)換方式,比較 一下上面和下面這個(gè)書寫方式的不同:long int el=123;short i=int (el);float m=34.56;int i=int (m);使用強(qiáng)制類型轉(zhuǎn)換的最大好處就是:禁止編譯器對你故意去做的事發(fā)出警告。但是,利用強(qiáng)制類型轉(zhuǎn)換說明使得編譯器的類型檢查機(jī)制失效,這不是明智的選擇。通常,是不提倡進(jìn)行強(qiáng)制類型轉(zhuǎn)換的。除非不可避

8、免,如要調(diào)用malloc()函數(shù)時(shí)要用的void型指針轉(zhuǎn)換成指定類型指針。四、標(biāo)準(zhǔn)輸入輸出流整理分享完美WORD格式在C語言中,輸入輸出是使用語句scanf()和printf()來實(shí)現(xiàn)的,而C+中 是使用類來實(shí)現(xiàn)的。#include iostream.hmain() C+中main()函數(shù)默認(rèn)為int型,而C語言中默認(rèn)為void型。int a;cout a; /*輸入一個(gè)數(shù)值*/cout return 0;cin,cout,endl 對象,他們本身并不是C+語言的組成部分。雖然他們已經(jīng) 是ANSI標(biāo)準(zhǔn)C+中被定義,但是他們不是語言的內(nèi)在組成部分。在 C+中不 提供內(nèi)在的輸入輸出運(yùn)算符,這與其他

9、語言是不同的。輸入和輸出是通過C+類來實(shí)現(xiàn)的,cin和cout是這些類的實(shí)例,他們是在 C+語言的外部實(shí)現(xiàn)。在C+語言中,有了一種新的注釋方法,就是,在該行后的所有說 明都被編譯器認(rèn)為是注釋,這種注釋不能換行。 C+中仍然保留了傳統(tǒng)C語言 的注釋風(fēng)格/*/ oC+也可采用格式化輸出的方法:整理分享完美WORD格式#include iostream.hint main()(int a;cout a;cout類的設(shè)計(jì)、構(gòu)造函數(shù)和析構(gòu)函數(shù)一、類的設(shè)計(jì).類的聲明class類名(private: / 私有public: / 公有整理分享完美WORD格式);.類的成員一般在C+類中,所有定義的變量和函數(shù)都

10、是類的成員。如果是變量,我 們就叫它數(shù)據(jù)成員如果是函數(shù),我們就叫它成員函數(shù)。.類成員的可見性private和public訪問控制符決定了成員的可見性。由一個(gè)訪問控制符設(shè)定的可訪問狀態(tài)將一直持續(xù)到下一個(gè)訪問控制符出現(xiàn),或者類聲明的結(jié)束。私有成員僅能被同一個(gè)類中的成員函數(shù)訪問,公有成員既可以被同一類中的成員函數(shù) 訪問,也可以被其他已經(jīng)實(shí)例化的類中函數(shù)訪問。當(dāng)然,這也有例外的情況,這 是以后要討論的友元函數(shù)。類中默認(rèn)的數(shù)據(jù)類型是private,結(jié)構(gòu)中的默認(rèn)類型是public。一般情況下, 變量都作為私有成員出現(xiàn),函數(shù)都作為公有成員出現(xiàn)。類中還有一種訪問控制符protected ,叫保護(hù)成員,以后再說

11、明。.初始化在聲明一個(gè)類的對象時(shí),可以用圓括號(hào)()包含一個(gè)初始化表。看下面一個(gè)例子:整理分享完美WORD格式#include iostream.hclass Box(private:int height,width,depth; /3 個(gè)私有數(shù)據(jù)成員public:Box(int,int,int);Box();int volume(); / 成員函數(shù);Box二Box(int ht,int wd,int dp)(height=ht;width=wd;depth=dp;整理分享完美WORD格式)Box:-Box()(/nothing)int Box:volume()(return height*wi

12、dth*depth;)int main()(Box thisbox(3,4,5); /聲明一個(gè)類對象并初始化cout return 0;)當(dāng)一個(gè)類中沒有private成員和protected成員時(shí),也沒有虛函數(shù),并且不是從其他類中派生出來的,可以用。來初始化。(以后再講解)整理分享完美WORD格式.內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)和普通函數(shù)的區(qū)別是:內(nèi)聯(lián)函數(shù)是在編譯過程中展開的。通常內(nèi)聯(lián)函數(shù)必須簡短。定義類的內(nèi)聯(lián)函數(shù)有兩種方法:一種和 C語言一樣,在定義函數(shù)時(shí)使用關(guān)鍵字inline 0如:inline int Box:volume()(return height*width*depth;還有一種方法就是直接在

13、類聲明的內(nèi)部定義函數(shù)體,而不是僅僅給出一個(gè)函數(shù)原型。我們把上面的函數(shù)簡化一下:#include iostream.hclass Box(private:int height,width,depth;public:整理分享完美WORD格式Box(int ht,int wd,int dp)(height=ht;width=wd;depth=dp;)-Box();int volume()(return height*width*depth;);int main()(Box thisbox(3,4,5); /聲明一個(gè)類對象并初始化整理分享完美WORD格式cout return 0;)這樣,兩個(gè)函數(shù)都默

14、認(rèn)為內(nèi)聯(lián)函數(shù)了。二、構(gòu)造函數(shù)什么是構(gòu)造函數(shù)?通俗的講,在類中,函數(shù)名和類名相同的函數(shù)稱為構(gòu)造函 數(shù)。上面的Box()函數(shù)就是構(gòu)造函數(shù)。C+允許同名函數(shù),也就允許在一個(gè)類中 有多個(gè)構(gòu)造函數(shù)。如果一個(gè)都沒有,編譯器將為該類產(chǎn)生一個(gè)默認(rèn)的構(gòu)造函數(shù), 這個(gè)構(gòu)造函數(shù)可能會(huì)完成一些工作,也可能什么都不做。絕對不能指定構(gòu)造函數(shù)的類型,即使是 void型都不可以。實(shí)際上構(gòu)造函數(shù) 默認(rèn)為void型。當(dāng)一個(gè)類的對象進(jìn)入作用域時(shí),系統(tǒng)會(huì)為其數(shù)據(jù)成員分配足夠的內(nèi)存, 但是 系統(tǒng)不一定將其初始化。和內(nèi)部數(shù)據(jù)類型對象一樣,外部對象的數(shù)據(jù)成員總是初 始化為00局部對象不會(huì)被初始化。構(gòu)造函數(shù)就是被用來進(jìn)行初始化工作的。當(dāng) 自

15、動(dòng)類型的類對象離開其作用域時(shí),所站用的內(nèi)存將釋放回系統(tǒng)??瓷厦娴睦樱瑯?gòu)造函數(shù)Box()函數(shù)接受三個(gè)整型擦黑素,并把他們賦值給 立方體對象的數(shù)據(jù)成員。如果構(gòu)造函數(shù)沒有參數(shù),那么聲明對象時(shí)也不需要括號(hào)。.使用默認(rèn)參數(shù)的構(gòu)造函數(shù)整理分享完美WORD格式當(dāng)在聲明類對象時(shí),如果沒有指定參數(shù),則使用默認(rèn)參數(shù)來初始化對象#include iostream.hclass Box(private:int height,width,depth;public:Box(int ht=2,int wd=3,int dp=4)(height=ht;width=wd;depth=dp;Box();int volume()

16、整理分享完美WORD格式(return height*width*depth;);int main()(Box thisbox(3,4,5); / 初始化Box defaulbox;/使用默認(rèn)參數(shù)cout coutreturn 0;).默認(rèn)構(gòu)造函數(shù)沒有參數(shù)或者參數(shù)都是默認(rèn)值的構(gòu)造函數(shù)稱為默認(rèn)構(gòu)造函數(shù)。如果你不提供構(gòu)造函數(shù),編譯器會(huì)自動(dòng)產(chǎn)生一個(gè)公共的默認(rèn)構(gòu)造函數(shù), 這個(gè)構(gòu)造函數(shù)什么都不 做。如果至少提供一個(gè)構(gòu)造函數(shù),則編譯器就不會(huì)產(chǎn)生默認(rèn)構(gòu)造函數(shù)。.重載構(gòu)造函數(shù)整理分享完美WORD格式一個(gè)類中可以有多個(gè)構(gòu)造函數(shù)。這些構(gòu)造函數(shù)必須具有不同的參數(shù)表。在一 個(gè)類中需要接受不同初始化值時(shí),就需要編寫多個(gè)

17、構(gòu)造函數(shù),但有時(shí)候只需要一 個(gè)不帶初始值的空的Box對象。#include iostream.hclass Boxprivate:int height,width,depth;public:Box() /nothing Box(int ht=2,int wd=3,int dp=4)height=ht;width=wd;depth=dp;整理分享完美WORD格式Box();int volume()(return height*width*depth;);int main()(Box thisbox(3,4,5); / 初始化Box otherbox;otherbox=thisbox;cout r

18、eturn 0;)這兩個(gè)構(gòu)造函數(shù)一個(gè)沒有初始化值,一個(gè)有。當(dāng)沒有初始化值時(shí),程序使用默認(rèn)值,即2, 3, 4。整理分享完美WORD格式但是這樣的程序是不好的。它允許使用初始化過的和沒有初始化過的Box對象,但它沒有考慮當(dāng)thisbox給otherbox 賦值失敗后,volume()該返回什么, 較好的方法是,沒有參數(shù)表的構(gòu)造函數(shù)也把默認(rèn)值賦值給對象。class Box(int height,width,depth;public:Box()(height=0;width=0;depth=0;Box(int ht,int wd,int dp)(height=ht;width=wd;depth=dp

19、;int volume()整理分享完美WORD格式(return height*width*depth;);這還不是最好的方法,更好的方法是使用默認(rèn)參數(shù),根本不需要不帶參數(shù)的 構(gòu)造函數(shù)。class Box(int height,width,depth;public:Box(int ht=0,int wd=0,int dp=0)(height=ht;width=wd;depth=dp;)int volume()整理分享完美WORD格式return height*width*depth;);三、析構(gòu)函數(shù)當(dāng)一個(gè)類的對象離開作用域時(shí),析構(gòu)函數(shù)將被調(diào)用 (系統(tǒng)自動(dòng)調(diào)用)。析構(gòu)函 數(shù)的名字和類名一樣,不過

20、要在前面加上。對一個(gè)類來說,只能允許一個(gè)析構(gòu)函數(shù),析構(gòu)函數(shù)不能有參數(shù),并且也沒有返回值。析構(gòu)函數(shù)的作用是完成一個(gè) 清理工作,如釋放從堆中分配的內(nèi)存。我們也可以只給出析構(gòu)函數(shù)的形式,而不給出起具體函數(shù)體,其效果是一樣 的,如上面的例子。但在有些情況下,析構(gòu)函數(shù)又是必需的。如在類中從堆中分 配了內(nèi)存,則必須在析構(gòu)函數(shù)中釋放。C+的內(nèi)部數(shù)據(jù)類型遵循隱式類型轉(zhuǎn)換規(guī)則。 假設(shè)某個(gè)表達(dá)市中使用了一個(gè)短整型變量,而編譯器根據(jù)上下文認(rèn)為這兒需要是的長整型, 則編譯器就會(huì)根據(jù)類型 轉(zhuǎn)換規(guī)則自動(dòng)把它轉(zhuǎn)換成長整型,這種隱式轉(zhuǎn)換出現(xiàn)在賦值、參數(shù)傳遞、返回值、 初始化和表達(dá)式中。我們也可以為類提供相應(yīng)的轉(zhuǎn)換規(guī)則。對一個(gè)

21、類建立隱式轉(zhuǎn)換規(guī)則需要構(gòu)造一個(gè)轉(zhuǎn)換函數(shù),該函數(shù)作為類的成員,可以把該類的對象和其他數(shù)據(jù)類型的對象進(jìn)行相互轉(zhuǎn)換。聲明了轉(zhuǎn)換函數(shù),就告訴了編譯器,當(dāng)根據(jù)句法判定需要類型轉(zhuǎn)換時(shí),就調(diào)用函數(shù)。整理分享完美WORD格式有兩種轉(zhuǎn)換函數(shù)。一種是轉(zhuǎn)換構(gòu)造函數(shù);另一種是成員轉(zhuǎn)換函數(shù)。需要采用 哪種轉(zhuǎn)換函數(shù)取決于轉(zhuǎn)換的方向。一、轉(zhuǎn)換構(gòu)造函數(shù)當(dāng)一個(gè)構(gòu)造函數(shù)僅有一個(gè)參數(shù),且該參數(shù)是不同于該類的一個(gè)數(shù)據(jù)類型,這樣的構(gòu)造函數(shù)就叫轉(zhuǎn)換構(gòu)造函數(shù)。轉(zhuǎn)換構(gòu)造函數(shù)把別的數(shù)據(jù)類型的對象轉(zhuǎn)換為該 類的一個(gè)對象。和其他構(gòu)造函數(shù)一樣,如果聲明類的對象的初始化表同轉(zhuǎn)換構(gòu)造 函數(shù)的參數(shù)表相匹配,該函數(shù)就會(huì)被調(diào)用。當(dāng)在需要使用該類的地方使用了別

22、的 數(shù)據(jù)類型,便宜器就會(huì)調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)進(jìn)行轉(zhuǎn)換。#include iostream.h#include time.h#include stdio.h class Date ( int mo, da, yr; public: Date(time_t); void display();整理分享完美WORD格式);void Date:display()(char year5;if(yr10)sprintf(year,0%d,yr);elsesprintf(year,%d,yr);couttm_mday;mo=tim-tm_mon+1;yr=tim-tm_year;整理分享完美WORD格式if(yr

23、=100) yr-=100;)int main()(time_t now=time(0);Date dt(now);dt.display();return 0;)本程序先調(diào)用time()函數(shù)來獲取當(dāng)前時(shí)間,并把它賦給time_t對象;然后程 序通過調(diào)用Date類的轉(zhuǎn)換構(gòu)造函數(shù)來創(chuàng)建一個(gè) Date對象,該對象由time_t 對象轉(zhuǎn)換而來。time_t對象先傳遞給localtime()函數(shù),然后返回一個(gè)指向tm 結(jié)構(gòu)(time.h文件中聲明)的指針,然后構(gòu)造函數(shù)把結(jié)構(gòu)中的日月年的數(shù)值拷貝給 Date對象的數(shù)據(jù)成員,這就完成了從time_t對象到Date對象的轉(zhuǎn)換。二、成員轉(zhuǎn)換函數(shù)成員轉(zhuǎn)換函數(shù)把該類

24、的對象轉(zhuǎn)換為其他數(shù)據(jù)類型的對象。在成員轉(zhuǎn)換函數(shù)的 聲明中要用到關(guān)鍵字operator 。這樣聲明一個(gè)成員轉(zhuǎn)換函數(shù):整理分享完美WORD格式operator aaa();在這個(gè)例子中,aaa就是要轉(zhuǎn)換成的數(shù)據(jù)類型的說明符。這里的類型說明 符可以是任何合法的C+類型,包括其他的類。如下來定義成員轉(zhuǎn)換函數(shù);Classname:operator aaa()類名標(biāo)識(shí)符是聲明了該函數(shù)的類的類型說明符。上面定義的Date類并不能把該類的對象轉(zhuǎn)換回time_t型變量,但可以把它轉(zhuǎn)換成一個(gè)長整型值,計(jì)算從 2000年1月1日到現(xiàn)在的天數(shù)。#include iostream.hclass Dateint mo,d

25、a,yr;public:Date(int m,int d,int y) mo=m; da=d; yr=y;operator int(); 聲明;Date:operator int() / 定義整理分享完美WORD格式(static int dys=31,28,31,30,31,30,31,31,30,31,30,31);int days=yr-2000;days*=365;days+=(yr-2000)/4;for(int i=0;i days+=dysi;days+=da;return days;)int main()Date now(12,24,2003);int since=now;co

26、ut return 0;)整理分享完美WORD格式三、類的轉(zhuǎn)換上面兩個(gè)例子都是C+類對象和內(nèi)部數(shù)據(jù)對象之間的相互轉(zhuǎn)換。也可以定 義轉(zhuǎn)換函數(shù)來實(shí)現(xiàn)兩個(gè)類對象之間的相互轉(zhuǎn)換。#include iostream.hclass CustomDate public: int da, yr;CustomDate(int d=0,int y=0) da=d; yr=y; void display() cout ;class Date int mo, da, yr;整理分享完美WORD格式public:Date(int m=0,int d=0,int y=0) mo=m; da=d; yr=y;Date(co

27、nst CustomDate&); / 轉(zhuǎn)換構(gòu)造函數(shù)operator CustomDate(); / 成員轉(zhuǎn)換函數(shù)void display()cout ;static int dys = 31,28,31,30,31,30,31,31,30,31,30,31;Date:Date(const CustomDate& jd)yr=jd.yr;da=jd.da;for(mo=0;modysmo) da-=dysmo;整理分享完美WORD格式else break;mo+;)Date:operator CustomDate()(CustomDate cd(0,yr);for(int i=0;i cd.d

28、a+=da;return cd;)int main()(Date dt(12,24,3);CustomDate cd;cd = dt; /調(diào)用成員轉(zhuǎn)換函數(shù) cd.display();整理分享完美WORD格式dt = cd; /調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)dt.display();return 0;)這個(gè)例子中有兩個(gè)類 CustomDate 和Date , CustomDate 型日期包含年 份和天數(shù)。這個(gè)例子沒有考慮閏年情況。但是在實(shí)際構(gòu)造一個(gè)類時(shí),應(yīng)該考慮到所有問 題的可能性。在Date里中具有兩種轉(zhuǎn)換函數(shù),這樣,當(dāng)需要從 Date型變?yōu)镃ustomD ate型十,可以調(diào)用成員轉(zhuǎn)換函數(shù);反之可以調(diào)用轉(zhuǎn)換

29、構(gòu)造函數(shù)。不能既在Date類中定義成員轉(zhuǎn)換函數(shù),又在 CustomDate 類里定義轉(zhuǎn)換 構(gòu)造函數(shù)。那樣編譯器在進(jìn)行轉(zhuǎn)換時(shí)就不知道該調(diào)用哪一個(gè)函數(shù),從而出錯(cuò).四、轉(zhuǎn)換函數(shù)的調(diào)用C+里調(diào)用轉(zhuǎn)換函數(shù)有三種形式:第一種是隱式轉(zhuǎn)換,例如編譯器需要一個(gè) Date對象,而程序提供的是CustomDate 對象,編譯器會(huì)自動(dòng)調(diào)用合適的轉(zhuǎn) 換函數(shù)。另外兩種都是需要在程序代碼中明確給出的顯式轉(zhuǎn)換。C+強(qiáng)制類型轉(zhuǎn)換是一種,還有一種是顯式調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)和成員轉(zhuǎn)換函數(shù)。下面的程序給出 了三中轉(zhuǎn)換形式:整理分享完美WORD格式#include iostream.hclass CustomDate(public:int

30、 da, yr;CustomDate(int d=0,int y=0) da=d; yr=y;void display()cout ;class Dateint mo, da, yr;public:Date(int m,int d,int y)整理分享完美WORD格式(mo=m; da=d; yr=y;)operator CustomDate(););Date:operator CustomDate()(static int dys=31,28,31,30,31,30,31,31,30,31,30,31);CustomDate cd(0,yr);for(int i=0;i cd.da+=da;

31、return cd;)int main()Date dt(11,17,89);整理分享完美WORD格式CustomDate cd;cd = dt;cd.display();cd = (CustomDate) dt;cd.display();cd = CustomDate(dt);cd.display();return 0;五、轉(zhuǎn)換發(fā)生的情形上面的幾個(gè)例子都是通過不能類型對象之間的相互賦值來調(diào)用轉(zhuǎn)換函數(shù),還有幾種調(diào)用的可能:參數(shù)傳遞初始化返回值表達(dá)式語句整理分享完美WORD格式這些情況下,都有可能調(diào)用轉(zhuǎn)換函數(shù)。 下面的程序不難理解,就不分析了。#include iostream.h class

32、CustomDate ( public: int da, yr;CustomDate() yr=y;CustomDate(int d,int y) da=d; void display() cout );class Date 整理分享完美WORD格式int mo, da, yr;public:Date(int m,int d,int y) mo=m; da=d; yr=y; operator CustomDate();Date:operator CustomDate()static int dys=31,28,31,30,31,30,31,31,30,31,30,31;CustomDate cd(0,yr);for (int i=0;i cd.da+=da;return cd; class TesterCustomDate cd;整理分享完美WORD格式public:explicit Tester(CustomDate c) cd=c; void display() cd.display(); ;void dispdate(Custom

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論