面向?qū)ο蟮木幊谭椒╛第1頁(yè)
面向?qū)ο蟮木幊谭椒╛第2頁(yè)
面向?qū)ο蟮木幊谭椒╛第3頁(yè)
面向?qū)ο蟮木幊谭椒╛第4頁(yè)
面向?qū)ο蟮木幊谭椒╛第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

面向?qū)ο蟮木幊谭椒?第一頁(yè),共六十三頁(yè),2022年,8月28日本講主要內(nèi)容面向?qū)ο蟮乃枷隣OP的基本特點(diǎn)類(lèi)構(gòu)造函數(shù)析構(gòu)函數(shù)對(duì)象內(nèi)聯(lián)成員函數(shù)拷貝構(gòu)造函數(shù)聚集的概念2第二頁(yè),共六十三頁(yè),2022年,8月28日回顧:面向過(guò)程的設(shè)計(jì)方法重點(diǎn)放在如何實(shí)現(xiàn)細(xì)節(jié)過(guò)程方面,將數(shù)據(jù)與函數(shù)分開(kāi)。形式:主模塊+若干個(gè)子模塊

(main()+子函數(shù))。特點(diǎn):

自頂向下,逐步求精——功能分解。缺點(diǎn):效率低,是手工作坊式的編程。面向?qū)ο蟮乃枷?第三頁(yè),共六十三頁(yè),2022年,8月28日面向?qū)ο蟮姆椒ㄓ^點(diǎn):自然界是由實(shí)體(對(duì)象)所組成。程序設(shè)計(jì)方法:使用面向?qū)ο蟮挠^點(diǎn)來(lái)描述模仿并處理現(xiàn)實(shí)問(wèn)題。要求:高度概括、分類(lèi)和抽象。目的:實(shí)現(xiàn)軟件設(shè)計(jì)的產(chǎn)業(yè)化。面向?qū)ο蟮乃枷?第四頁(yè),共六十三頁(yè),2022年,8月28日抽象抽象是對(duì)具體對(duì)象(問(wèn)題)進(jìn)行概括,抽出這一類(lèi)對(duì)象的公共性質(zhì)并加以描述的過(guò)程。先注意問(wèn)題的本質(zhì)及描述,其次是實(shí)現(xiàn)過(guò)程或細(xì)節(jié)。數(shù)據(jù)抽象:描述某類(lèi)對(duì)象的屬性或狀態(tài)(對(duì)象相互區(qū)別的物理量)。代碼抽象:描述某類(lèi)對(duì)象的共有的行為特征或具有的功能。抽象的實(shí)現(xiàn):通過(guò)類(lèi)的定義。OOP的基本特點(diǎn)5第五頁(yè),共六十三頁(yè),2022年,8月28日抽象實(shí)例一:窗口數(shù)據(jù)抽象:intx1,y1,x2,y2,color代碼抽象:OpenWindow(),CloseWindow(),

MoveWindow(),ChangeWindow()實(shí)例二:鐘表數(shù)據(jù)抽象:intHour,intMinute,intSecond代碼抽象:SetTime(),ShowTime()OOP的基本特點(diǎn)6第六頁(yè),共六十三頁(yè),2022年,8月28日抽象實(shí)例三:人數(shù)據(jù)抽象:char*name,char*sex,intage,intid代碼抽象:

生物屬性角度:

GetCloth(),EatFood(),GoHome(),Sleep()

社會(huì)屬性角度:

AddPerson(),DeletePerson(),PrintData(),Change()OOP的基本特點(diǎn)7第七頁(yè),共六十三頁(yè),2022年,8月28日封裝將抽象出的數(shù)據(jù)成員、代碼成員相結(jié)合,將它們視為一個(gè)整體。目的是增強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只需要通過(guò)外部接口,以特定的訪問(wèn)權(quán)限,來(lái)使用類(lèi)的成員。實(shí)現(xiàn)封裝:類(lèi)定義中的{}OOP的基本特點(diǎn)8第八頁(yè),共六十三頁(yè),2022年,8月28日封裝實(shí)例:classWatch{public:voidSetTime(intNewH,intNewM,

intNewS);

voidShowTime();private:intHour,Minute,Second;};邊界外部接口特定的訪問(wèn)權(quán)限OOP的基本特點(diǎn)9第九頁(yè),共六十三頁(yè),2022年,8月28日繼承與派生是C++中支持層次分類(lèi)的一種機(jī)制,允許程序員在保持原有類(lèi)特性的基礎(chǔ)上,進(jìn)行更具體的類(lèi)定義。實(shí)現(xiàn):定義派生類(lèi)。OOP的基本特點(diǎn)10第十頁(yè),共六十三頁(yè),2022年,8月28日多態(tài)性多態(tài):同一名稱(chēng),不同的功能實(shí)現(xiàn)方式。目的:達(dá)到行為標(biāo)識(shí)統(tǒng)一,減少程序中標(biāo)識(shí)符的個(gè)數(shù)。實(shí)現(xiàn):重載函數(shù)和虛函數(shù)。OOP的基本特點(diǎn)11第十一頁(yè),共六十三頁(yè),2022年,8月28日c++中的類(lèi)類(lèi)是OOP的精華,利用它可以實(shí)現(xiàn)數(shù)據(jù)的封裝、隱藏、繼承與派生。利用類(lèi)可以編寫(xiě)大型復(fù)雜程序,其模塊化程度比C中采用函數(shù)更高。類(lèi)和對(duì)象12第十二頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)的定義類(lèi)是一種用戶(hù)自定義類(lèi)型,定義形式:class類(lèi)名稱(chēng){

public:外部接口protected:保護(hù)型成員private:私有成員}類(lèi)和對(duì)象13第十三頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)的成員成員數(shù)據(jù)與一般的變量定義相同,但需要將它放在類(lèi)的定義體中。成員函數(shù)在類(lèi)中說(shuō)明原形,在類(lèi)外定義函數(shù)體實(shí)現(xiàn),并在函數(shù)名前使用類(lèi)名加以限定。也可以直接在類(lèi)中定義函數(shù)體,形成內(nèi)聯(lián)成員函數(shù)。允許定義重載函數(shù)和帶缺省形參值的函數(shù)類(lèi)和對(duì)象14第十四頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)成員的訪問(wèn)控制屬性在類(lèi)中可以包含以下三種類(lèi)型的數(shù)據(jù)和函數(shù)成員:私有類(lèi)型(private)公有類(lèi)型(public)保護(hù)類(lèi)型(protected)類(lèi)和對(duì)象15第十五頁(yè),共六十三頁(yè),2022年,8月28日私有類(lèi)型成員在關(guān)鍵字private后面聲明,如果省略關(guān)鍵字private,那么必須緊跟在類(lèi)型名稱(chēng)的后面聲明。私有類(lèi)型的成員只允許本類(lèi)中的函數(shù)訪問(wèn),而類(lèi)外部的任何函數(shù)都不能訪問(wèn)。類(lèi)和對(duì)象16第十六頁(yè),共六十三頁(yè),2022年,8月28日公有類(lèi)型成員在關(guān)鍵字public后面聲明,它們是類(lèi)與外部的接口,任何外部函數(shù)都可以訪問(wèn)公有類(lèi)型數(shù)據(jù)和函數(shù)。類(lèi)和對(duì)象17第十七頁(yè),共六十三頁(yè),2022年,8月28日保護(hù)類(lèi)型與private類(lèi)似,其差別表現(xiàn)在繼承與派生時(shí)對(duì)派生類(lèi)的影響不同,稍后再講。類(lèi)和對(duì)象18第十八頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)的定義舉例classone_datum{intdata_store;public:voidset(intin_value);intget_value(void);};voidone_datum::set(intin_value){data_store=in_value;}intone_datum::get_value(void){returndata_store;}類(lèi)和對(duì)象19第十九頁(yè),共六十三頁(yè),2022年,8月28日內(nèi)聯(lián)成員函數(shù)在類(lèi)中聲明的成員函數(shù)可以采用兩種方式使其成為內(nèi)聯(lián)函數(shù)將函數(shù)體放在類(lèi)的聲明中。使用inline關(guān)鍵字。類(lèi)和對(duì)象20第二十頁(yè),共六十三頁(yè),2022年,8月28日內(nèi)聯(lián)成員函數(shù)舉例classLocation{public:voidInit(intinitX,intinitY)

{X=initX;Y=initY;}intGetX(){returnX;}intGetY(){returnY;}private:intX,Y;};類(lèi)和對(duì)象21第二十一頁(yè),共六十三頁(yè),2022年,8月28日對(duì)象類(lèi)的對(duì)象是具有該類(lèi)類(lèi)型的某一特定實(shí)體,即該類(lèi)型的變量。定義形式:類(lèi)名對(duì)象名;例:

watchmyWatch;類(lèi)和對(duì)象22第二十二頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)中成員的訪問(wèn)方式類(lèi)中成員互訪直接使用成員名類(lèi)外訪問(wèn)使用“對(duì)象名.成員名”方式訪問(wèn)

public

屬性的成員類(lèi)和對(duì)象23第二十三頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)的應(yīng)用舉例#include<iostream.h>classWatch{public:

voidSetTime(intNewH=0, intNewM=0,intNewS=0);

voidShowTime();private:intHour,Minute,Second;};類(lèi)和對(duì)象24第二十四頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)的應(yīng)用舉例//時(shí)鐘類(lèi)成員函數(shù)的實(shí)現(xiàn)voidWatch::SetTime(intNewH,intNewM,

intNewS){Hour=NewH;Minute=NewM;Second=NewS;}inlinevoidWatch::ShowTime(){cout<<Hour<<":"<<Minute<<":"<<Second;}類(lèi)和對(duì)象25第二十五頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)的應(yīng)用舉例//主函數(shù)voidmain(void){WatchmyWatch; //定義對(duì)象myWatch.SetTime();//按默認(rèn)值設(shè)置myWatch.ShowTime();myWatch.SetTime(8,30,30);myWatch.ShowTime();}類(lèi)和對(duì)象26第二十六頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)以上例中定義了一個(gè)SetTime()成員函數(shù)。調(diào)用這個(gè)函數(shù)可以給對(duì)象設(shè)置時(shí)間。構(gòu)造函數(shù)也有類(lèi)似的功能:給對(duì)象賦初值。但構(gòu)造函數(shù)是在定義對(duì)象時(shí)由系統(tǒng)自動(dòng)調(diào)用的。構(gòu)造函數(shù)和析構(gòu)函數(shù)27第二十七頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)構(gòu)造函數(shù)的作用是在對(duì)象被創(chuàng)建時(shí)使用特定的值構(gòu)造對(duì)象,或者說(shuō)將對(duì)象初始化為一個(gè)特定的狀態(tài)。在對(duì)象創(chuàng)建時(shí)由系統(tǒng)自動(dòng)調(diào)用。如果程序中未定義出,則系統(tǒng)自動(dòng)產(chǎn)生出一個(gè)缺省形式的構(gòu)造函數(shù)允許為內(nèi)聯(lián)函數(shù)、重載函數(shù)、帶缺省形參值的函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)28第二十八頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)(例)classwatch{public:

watch(intinitH,intinitM,intinitS);//構(gòu)造函數(shù)voidSetTime(intNewH, intNewM,intNewS);

voidShowTime();private:intHour,Minute,Second;};構(gòu)造函數(shù)和析構(gòu)函數(shù)29第二十九頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)(例)//實(shí)現(xiàn)構(gòu)造函數(shù)watch::watch(intinitH,intinitM,intinitS){Hour=initH;Minute=initM;Second=initS;}構(gòu)造函數(shù)和析構(gòu)函數(shù)30第三十頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)(例)//主函數(shù)voidmain(void){watchmyWatch(05,06,07); //定義對(duì)象

watchwatch01(03,04,05);myWatch.SetTime();//按默認(rèn)值設(shè)置

myWatch.ShowTime();cout<<endl;myWatch.SetTime(8,30,30);myWatch.ShowTime();cout<<endl;watch01.ShowTime();cout<<endl;}構(gòu)造函數(shù)和析構(gòu)函數(shù)31第三十一頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)構(gòu)造函數(shù)的名字一定和類(lèi)的名字相同。構(gòu)造函數(shù)沒(méi)有返回值;函數(shù)也沒(méi)有類(lèi)型。構(gòu)造函數(shù)主要是兩個(gè)功能:為對(duì)象開(kāi)辟空間,為對(duì)象中的數(shù)據(jù)成員賦初值。如果沒(méi)有定義構(gòu)造函數(shù),編譯系統(tǒng)會(huì)自動(dòng)生成一個(gè)確省的構(gòu)造函數(shù)。構(gòu)造函數(shù)和析構(gòu)函數(shù)32第三十二頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)對(duì)上例中構(gòu)造函數(shù)的默認(rèn)構(gòu)造函數(shù)是:

watch::watch(){}只能用來(lái)設(shè)置對(duì)象的存儲(chǔ)空間,不能賦初值。構(gòu)造函數(shù)和析構(gòu)函數(shù)33第三十三頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)含有確省參數(shù)的構(gòu)造函數(shù):classwatch{public:

watch(intinitH=0,intinitM=0,intinitS=0);//含有缺省參數(shù)構(gòu)造函數(shù)

voidSetTime(intNewH,intNewM,intNewS); voidShowTime();private:intHour,Minute,Second;};構(gòu)造函數(shù)和析構(gòu)函數(shù)34第三十四頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)含有確省參數(shù)的構(gòu)造函數(shù):voidmain(void){watchmyWatch; //按缺省值定義對(duì)象

watchwatch01(8,7);//只傳遞一個(gè)參數(shù)

watchwatch01(03,04,05);}注:缺省值不能在構(gòu)造函數(shù)實(shí)現(xiàn)時(shí)規(guī)定。構(gòu)造函數(shù)和析構(gòu)函數(shù)35第三十五頁(yè),共六十三頁(yè),2022年,8月28日拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),其形參為本類(lèi)的對(duì)象引用。class類(lèi)名{public:類(lèi)名(形參);//構(gòu)造函數(shù)類(lèi)名(類(lèi)名&對(duì)象名);//拷貝構(gòu)造函數(shù)...};類(lèi)名::類(lèi)名(類(lèi)名&對(duì)象名)//拷貝構(gòu)造函數(shù)的實(shí)現(xiàn){函數(shù)體}構(gòu)造函數(shù)和析構(gòu)函數(shù)36第三十六頁(yè),共六十三頁(yè),2022年,8月28日拷貝構(gòu)造函數(shù)classLocation{public:Location(intxx=0,intyy=0){X=xx;Y=yy;}

Location(Location&p);intGetX(){returnX;}intGetY(){returnY;}private:intX,Y;};構(gòu)造函數(shù)和析構(gòu)函數(shù)37第三十七頁(yè),共六十三頁(yè),2022年,8月28日Location::Location(Location&p){X=2*p.X;Y=2*p.Y;cout<<"拷貝構(gòu)造函數(shù)被調(diào)用"<<endl;}第三十八頁(yè),共六十三頁(yè),2022年,8月28日拷貝構(gòu)造函數(shù)當(dāng)用類(lèi)的一個(gè)對(duì)象去初始化該類(lèi)的另一個(gè)對(duì)象時(shí)系統(tǒng)自動(dòng)調(diào)用它實(shí)現(xiàn)拷貝賦值。例:intmain(void){LocationC;//按默認(rèn)值定義

LocationA(1,2);LocationB(A);//拷貝構(gòu)造函數(shù)被調(diào)用

cout<<B.GetX()<<““<<B.GetY()<<endl;return0;}構(gòu)造函數(shù)和析構(gòu)函數(shù)39第三十九頁(yè),共六十三頁(yè),2022年,8月28日拷貝構(gòu)造函數(shù)執(zhí)行結(jié)果:

拷貝構(gòu)造函數(shù)被調(diào)用 24構(gòu)造函數(shù)和析構(gòu)函數(shù)40第四十頁(yè),共六十三頁(yè),2022年,8月28日拷貝構(gòu)造函數(shù)若函數(shù)的形參為類(lèi)對(duì)象,調(diào)用函數(shù)時(shí),實(shí)參賦值給形參,系統(tǒng)自動(dòng)調(diào)用拷貝構(gòu)造函數(shù)。例如:voidf(Locationp){cout<<p.GetX()<<endl;}intmain(){LocationA(3,4);f(A);//調(diào)用拷貝構(gòu)造函數(shù)

return0;}

構(gòu)造函數(shù)和析構(gòu)函數(shù)41第四十一頁(yè),共六十三頁(yè),2022年,8月28日拷貝構(gòu)造函數(shù)執(zhí)行時(shí),調(diào)用拷貝構(gòu)造函數(shù),將對(duì)象A拷貝到形參p,然后再執(zhí)行函數(shù)f。執(zhí)行結(jié)果: 拷貝構(gòu)造函數(shù)被調(diào)用

6

構(gòu)造函數(shù)和析構(gòu)函數(shù)42第四十二頁(yè),共六十三頁(yè),2022年,8月28日拷貝構(gòu)造函數(shù)當(dāng)函數(shù)的返回值是類(lèi)對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用拷貝構(gòu)造函數(shù)。例如:Locationg(){LocationA(1,2);returnA;//調(diào)用拷貝構(gòu)造函數(shù)}intmain(){LocationB;B=g();return0;}構(gòu)造函數(shù)和析構(gòu)函數(shù)43第四十三頁(yè),共六十三頁(yè),2022年,8月28日拷貝構(gòu)造函數(shù)如果程序員沒(méi)有為類(lèi)聲明拷貝初始化構(gòu)造函數(shù),則編譯器自己生成一個(gè)拷貝構(gòu)造函數(shù)。這個(gè)構(gòu)造函數(shù)執(zhí)行的功能是:用作為初始值的對(duì)象的每個(gè)數(shù)據(jù)成員的值,初始化將要建立的對(duì)象的對(duì)應(yīng)數(shù)據(jù)成員。構(gòu)造函數(shù)和析構(gòu)函數(shù)44第四十四頁(yè),共六十三頁(yè),2022年,8月28日析構(gòu)函數(shù)完成對(duì)象被刪除前的一些清理工作。在對(duì)象的生存期結(jié)束的時(shí)刻系統(tǒng)自動(dòng)調(diào)用它,然后再釋放此對(duì)象所屬的空間。如果程序中未定義析構(gòu)函數(shù),編譯器將自動(dòng)產(chǎn)生一個(gè)缺省的析構(gòu)函數(shù)。構(gòu)造函數(shù)和析構(gòu)函數(shù)45第四十五頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造函數(shù)和析構(gòu)函數(shù)舉例#include<iostream.h>classLocation{public:Location(intxx,intyy);~Location();//...其它函數(shù)原形

private:intX,intY;};構(gòu)造函數(shù)和析構(gòu)函數(shù)46第四十六頁(yè),共六十三頁(yè),2022年,8月28日Location::Location(intxx,intyy){X=xx;Y=yy;}Location::~Location(){}//...其它函數(shù)的實(shí)現(xiàn)略第四十七頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造初始化表構(gòu)造函數(shù)也可使用構(gòu)造初始化表對(duì)數(shù)據(jù)成員進(jìn)行初始化:如:Circle::Circle(floatr){radius=r;}可改寫(xiě)為:Circle::Circle(floatr):radius(r){}構(gòu)造函數(shù)和析構(gòu)函數(shù)48第四十八頁(yè),共六十三頁(yè),2022年,8月28日構(gòu)造初始化表又如:classA{inti;floatf;public:A(intX,floatY){i=X;f=Y;};};構(gòu)造函數(shù)和析構(gòu)函數(shù)相當(dāng)于:classA{inti;floatf;public:A(intX,floatY):i(X),f(Y){};};49第四十九頁(yè),共六十三頁(yè),2022年,8月28日聚集的概念類(lèi)中的成員數(shù)據(jù)是另一個(gè)類(lèi)的對(duì)象??梢栽谝延械某橄蟮幕A(chǔ)上實(shí)現(xiàn)更復(fù)雜的抽象。類(lèi)的聚集50第五十頁(yè),共六十三頁(yè),2022年,8月28日舉例classPoint{private:intx,y;//點(diǎn)的坐標(biāo)

public:Point(intxx=0,intyy=0){x=xx;y=yy;}//構(gòu)造函數(shù)

Point(Point&p);intGetX(){returnx;}//取X坐標(biāo)

intGetY(){returny;}//取Y坐標(biāo)};類(lèi)的聚集51第五十一頁(yè),共六十三頁(yè),2022年,8月28日//拷貝構(gòu)造函數(shù)的實(shí)現(xiàn)Point::Point(Point&p){x=p.x;y=p.y;cout<<p.x;cout<<"Point拷貝構(gòu)造函數(shù)被調(diào)用"<<endl;}第五十二頁(yè),共六十三頁(yè),2022年,8月28日//類(lèi)的聚集,Distance類(lèi)的定義classDistance{public:Distance(Pointxp1,Pointxp2);doubleGetDis(){returndist;}private:Pointp1,p2;doubledist;};//Distance類(lèi)以?xún)蓚€(gè)類(lèi)的對(duì)象p1,p2為成員數(shù)據(jù)。//構(gòu)造函數(shù)以?xún)蓚€(gè)類(lèi)的對(duì)象xp1、xp2作為形式參數(shù)第五十三頁(yè),共六十三頁(yè),2022年,8月28日//類(lèi)的聚集的構(gòu)造函數(shù)Distance::Distance(Pointxp1,Pointxp2):p1(xp1),p2(xp2){cout<<"Distance的構(gòu)造函數(shù)被調(diào)用"<<endl;doublex=double(p1.GetX()-p2.GetX());doubley=double(p1.GetY()-p2.GetY());dist=sqrt(x*x+y*y);}//x和y是函數(shù)的局部變量,和Point類(lèi)的成員無(wú)關(guān)。//sqrt是求平方根函數(shù),要使用math.h頭文件第五十四頁(yè),共六十三頁(yè),2022年,8月28日//主函數(shù)voidmain(){Pointmyp1(1,1),myp2(4,5);Distancemyd(myp1,myp2);cout<<"Thedistanceis:";cout<<myd.GetDis()<<endl;}//在生成myd對(duì)象時(shí),生成兩個(gè)對(duì)象myp2和myp1//再將它們作為實(shí)在參數(shù)傳遞給構(gòu)造函數(shù)Distance第五十五頁(yè),共六十三頁(yè),2022年,8月28日//運(yùn)行結(jié)果4Point拷貝構(gòu)造函數(shù)被調(diào)用1Point拷貝構(gòu)造函數(shù)被調(diào)用1Point拷貝構(gòu)造函數(shù)被調(diào)用4Point拷貝構(gòu)造函數(shù)被調(diào)用Distance的構(gòu)造函數(shù)被調(diào)用Thedistanceis:5//第五十六頁(yè),共六十三頁(yè),2022年,8月28日classLine{private:pointp1,p2;//線段的兩個(gè)端點(diǎn)public:Line(Pointa,Pointb);//構(gòu)造函數(shù)VoidDraw(void);//畫(huà)出線段};//...函數(shù)的實(shí)現(xiàn)略第五十七頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)聚集的構(gòu)造函數(shù)設(shè)計(jì)原則:不僅要負(fù)責(zé)對(duì)本類(lèi)中的基本類(lèi)型成員數(shù)據(jù)賦初值,也要對(duì)對(duì)象成員初始化。定義形式:類(lèi)名::類(lèi)名(對(duì)象成員所需的形參,本類(lèi)成員形參)

:對(duì)象1(參數(shù)),對(duì)象2(參數(shù)),......{本類(lèi)初始化}類(lèi)的聚集58第五十八頁(yè),共六十三頁(yè),2022年,8月28日類(lèi)聚集的構(gòu)造函數(shù)調(diào)用構(gòu)造函數(shù)調(diào)用順序:先調(diào)用內(nèi)嵌子對(duì)象的構(gòu)造函數(shù)(按內(nèi)嵌時(shí)的定義順序,先定義者先構(gòu)造)。然后調(diào)用本類(lèi)的構(gòu)造函數(shù)。(析構(gòu)函數(shù)的調(diào)用

溫馨提示

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

評(píng)論

0/150

提交評(píng)論