C-第十三周2類與構(gòu)造函數(shù)1_第1頁(yè)
C-第十三周2類與構(gòu)造函數(shù)1_第2頁(yè)
C-第十三周2類與構(gòu)造函數(shù)1_第3頁(yè)
C-第十三周2類與構(gòu)造函數(shù)1_第4頁(yè)
C-第十三周2類與構(gòu)造函數(shù)1_第5頁(yè)
已閱讀5頁(yè),還剩123頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

11三月2024C第十三周2類與構(gòu)造函數(shù)11.結(jié)構(gòu)體類型和結(jié)構(gòu)體變量的定義方法2.結(jié)構(gòu)體變量的初始化3.結(jié)構(gòu)體變量的引用回顧:結(jié)構(gòu)體23請(qǐng)聲明一個(gè)結(jié)構(gòu)體結(jié)構(gòu)體名為Student,數(shù)據(jù)成員為學(xué)號(hào),姓名,年齡,成績(jī)。34請(qǐng)聲明一個(gè)結(jié)構(gòu)體結(jié)構(gòu)體名為Student,數(shù)據(jù)成員為學(xué)號(hào),姓名,年齡,成績(jī)。structStudent{charnumber[10];charname[20];intage;floatscore;};4定義結(jié)構(gòu)體變量5在C語(yǔ)言中說(shuō)明結(jié)構(gòu)體對(duì)象的方法為:structstudenta;在C++中,說(shuō)明方法為studenta;C結(jié)構(gòu)中不包含成員函數(shù),C++的類能包含數(shù)據(jù)成員,又能包含函數(shù)成員或者成員函數(shù)。6structStudent{charnumber[10];charname[20];intage;floatscore;voidprint(){cout<<“成績(jī)?yōu)椤?lt;<score<<endl;}};71、若程序中有以下的說(shuō)明和定義:structabc{intx;chary;}structabcs1,s2;則會(huì)發(fā)生的情況是______。 A)編譯時(shí)錯(cuò) B)程序?qū)㈨樞蚓幾g、連接、執(zhí)行C)能順序通過(guò)編譯、連接、但不能執(zhí)行 D)能順序通過(guò)編譯、但連接出錯(cuò)A82、有以下說(shuō)明和定義語(yǔ)句structstudent{intage;charnum[8];};structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};structstudent*p=stu;以下引用結(jié)構(gòu)體變量成員的表達(dá)式錯(cuò)誤的是

。(p++)->num B)p->numC)(*p).num D)stu[3].ageD9主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)10一、面向?qū)ο缶幊淘O(shè)計(jì)什么叫面向過(guò)程程序設(shè)計(jì)?什么叫面向?qū)ο缶幊淘O(shè)計(jì)?程序=算法+數(shù)據(jù)結(jié)構(gòu)程序=算法+數(shù)據(jù)結(jié)構(gòu)11程序設(shè)計(jì)方法的發(fā)展過(guò)程面向過(guò)程的程序設(shè)計(jì)方法面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì)方法面向?qū)ο蟮某绦蛟O(shè)計(jì)方法1213面向過(guò)程的設(shè)計(jì)方法重點(diǎn):如何實(shí)現(xiàn)的細(xì)節(jié)和過(guò)程,將數(shù)據(jù)與函數(shù)分開(kāi)。形式:主模塊+若干個(gè)子模塊(main()+子函數(shù))。特點(diǎn):自頂向下,逐步求精——功能分解。缺點(diǎn):效率低,程序的可重用性差。1314面向?qū)ο蟮姆椒康模簩?shí)現(xiàn)軟件設(shè)計(jì)的產(chǎn)業(yè)化。觀點(diǎn):自然界是由實(shí)體(對(duì)象)所組成。程序設(shè)計(jì)方法:使用面向?qū)ο蟮挠^點(diǎn)來(lái)描述模仿并處理現(xiàn)實(shí)問(wèn)題。要求:高度概括、分類、和抽象。14結(jié)構(gòu)化和面向?qū)ο蟪绦蛟O(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)—數(shù)據(jù)與程序分離,在處理數(shù)據(jù)發(fā)生變化時(shí),程序?qū)⑻幱诓豢捎脿顟B(tài)。而面向?qū)ο髮?shù)據(jù)和處理數(shù)據(jù)的函數(shù)封裝在一起,構(gòu)成一個(gè)整體即對(duì)象。我們用來(lái)定義對(duì)象的數(shù)據(jù)類型即是類。類代表著對(duì)同類型對(duì)象進(jìn)行抽象所得到的共性。15對(duì)象與類之間的關(guān)系:

對(duì)象是類的實(shí)例,類是對(duì)不同對(duì)象共同屬性的抽象!

類與對(duì)象可以視為模板與實(shí)例之間的關(guān)系!16基本概念對(duì)象類封裝繼承多態(tài)171.類與對(duì)象概念和實(shí)體特征:靜態(tài)特征可以用某種數(shù)據(jù)來(lái)描述動(dòng)態(tài)特征對(duì)象所表現(xiàn)的行為或具有的功能183.封裝把對(duì)象的屬性和服務(wù)封裝在一個(gè)獨(dú)立的系統(tǒng)單位。盡可能屏蔽對(duì)象的內(nèi)部細(xì)節(jié)。對(duì)外形成一個(gè)邊界(或者說(shuō)一道屏蔽),只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。194.繼承定義:特殊類的對(duì)象擁有其一般類的全部屬性與服務(wù),成為特殊類對(duì)一般類的繼承。優(yōu)點(diǎn):軟件復(fù)用20車子行走,載重,速度,、、、汽車燃燒油料,有輪子,自行,、、、奔馳車型,標(biāo)志、、、、215.多態(tài)多態(tài)性是指在一般類中定義的屬性和行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或行為在一般類及各個(gè)特殊類中具有不同的語(yǔ)義。22主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)23從結(jié)構(gòu)體到類結(jié)構(gòu)體

結(jié)構(gòu)體變量類

對(duì)象24結(jié)構(gòu)的演化結(jié)構(gòu)由若干個(gè)元素組成,C語(yǔ)言中稱這些結(jié)構(gòu)元素為結(jié)構(gòu)成員,C++中成為數(shù)據(jù)成員。C++的結(jié)構(gòu)中可以有函數(shù),類確實(shí)是從結(jié)構(gòu)演變而來(lái),開(kāi)始稱為“帶類的C”,這場(chǎng)革命就是從結(jié)構(gòu)含有函數(shù)開(kāi)始的。25結(jié)構(gòu)發(fā)生質(zhì)的演變1.函數(shù)與數(shù)據(jù)共存

C結(jié)構(gòu)中不包含成員函數(shù),C++的類能包含數(shù)據(jù)成員,又能包含函數(shù)成員或者成員函數(shù)??梢杂萌缦滦问矫枋觯簊truct結(jié)構(gòu)名{數(shù)據(jù)成員成員函數(shù)};262.封裝性在定義結(jié)構(gòu)時(shí),將數(shù)據(jù)成員使用private關(guān)鍵字,則產(chǎn)生封裝性。例:struct結(jié)構(gòu)名{public:成員函數(shù)private:

數(shù)據(jù)成員};私有的數(shù)據(jù)成員,必須通過(guò)成員函數(shù)才能使用,這就稱為數(shù)據(jù)的封裝性。結(jié)構(gòu)發(fā)生質(zhì)的演變27從一個(gè)結(jié)構(gòu)演變一個(gè)簡(jiǎn)單的類其實(shí),使用關(guān)鍵字class代替struct,就是一個(gè)標(biāo)準(zhǔn)的類。例:定義類:class結(jié)構(gòu)名{public:成員函數(shù)private:數(shù)據(jù)成員};28類是一種用戶自定義類型,聲明形式:class類名稱{public:公有成員(外部接口)private:私有成員protected:保護(hù)型成員};2930類成員訪問(wèn)控制—公有類型成員在關(guān)鍵字public后面聲明,它們是類與外部的接口,任何外部函數(shù)都可以訪問(wèn)公有類型數(shù)據(jù)和函數(shù)。3031私有類型成員在關(guān)鍵字private后面聲明,只允許本類中的函數(shù)訪問(wèn),而類外部的任何函數(shù)都不能訪問(wèn)。如果緊跟在類名稱的后面聲明私有成員,則關(guān)鍵字private可以省略。3132保護(hù)類型與private類似,其差別表現(xiàn)在繼承與派生時(shí)對(duì)派生類的影響不同,后面講。32類的聲明舉例classClock{public:

voidSetTime(intNewH,intNewM,intNewS);

voidShowTime();private:intHour,Minute,Second;};數(shù)據(jù)成員成員函數(shù)33類與結(jié)構(gòu)體的區(qū)別:C++中,類(class)定義中默認(rèn)情況下的成員是private的;而結(jié)構(gòu)(struct)定義中默認(rèn)情況下的成員是public的。34主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)35什么叫成員函數(shù)?根據(jù)位置分類:在類內(nèi)部定義在類外部定義二、定義成員函數(shù)36什么叫成員函數(shù)?為了實(shí)現(xiàn)對(duì)象的行為,我們把完成特定功能的語(yǔ)句組織成小塊程序,并注明相應(yīng)的名稱,這種組織形式的組合就構(gòu)成了成員函數(shù)。定義成員函數(shù)37定義成員函數(shù)必須具備的4個(gè)條件:1.有返回值類型2.有函數(shù)名3.有形參列表4.有函數(shù)體其中1、2、3是構(gòu)成函數(shù)的原型381.返回值類型函數(shù)名(類型形參1,類型形參2,…)2.返回值類型函數(shù)名(類型,類型,…)說(shuō)明一個(gè)函數(shù)原型的一般形式有兩種:關(guān)于成員函數(shù)定義位置的說(shuō)明:1.代碼比較少的函數(shù)的定義,可以在類中進(jìn)行;2.代碼比較多的函數(shù)的定義,我們通常在類中進(jìn)行函數(shù)原型的說(shuō)明,在類外對(duì)函數(shù)進(jìn)行定義。39在類體內(nèi)定義函數(shù)classLocation{public:intGetX(){returnx;}};

在類中聲明,在類外定義classLocation{public:intGetX()};intLocation::GetX(){returnx;}40

Location::GetX()是成員函數(shù)的全限定名,表示GetX()是隸屬于Location類的成員函數(shù)。雙冒號(hào)::是作用域區(qū)分符,::可以不跟類名,表示全局?jǐn)?shù)據(jù)或者全局函數(shù)。

Location::GetX()視為一個(gè)整體,類名加在成員函數(shù)名前,函數(shù)的返回類型加在成員函數(shù)的全限定名之前。4142回顧43結(jié)構(gòu)化和面向?qū)ο蟪绦蛟O(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)—數(shù)據(jù)與程序?而面向?qū)ο髮?shù)據(jù)和處理數(shù)據(jù)的函數(shù)?44對(duì)象與類之間的關(guān)系:

類與對(duì)象的關(guān)系?45主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)46從結(jié)構(gòu)體到類結(jié)構(gòu)體

結(jié)構(gòu)體變量類

對(duì)象47結(jié)構(gòu)發(fā)生質(zhì)的演變1.函數(shù)與數(shù)據(jù)共存

2.封裝性3.使用關(guān)鍵字?代替?,就是把一個(gè)結(jié)構(gòu)變成一個(gè)類48類是一種用戶自定義類型,聲明形式:class類名稱{public:公有成員(外部接口)private:私有成員protected:保護(hù)型成員};49類與結(jié)構(gòu)體的區(qū)別:C++中,類(class)定義中默認(rèn)情況下的成員是?的;而結(jié)構(gòu)(struct)定義中默認(rèn)情況下的成員是?的。50主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)51定義成員函數(shù)必須具備的4個(gè)條件:1.有返回值類型2.有函數(shù)名3.有形參列表4.有函數(shù)體其中1、2、3是構(gòu)成函數(shù)的原型521.返回值類型函數(shù)名(類型形參1,類型形參2,…)2.返回值類型函數(shù)名(類型,類型,…)說(shuō)明一個(gè)函數(shù)原型的一般形式有兩種:關(guān)于成員函數(shù)定義位置的說(shuō)明:1.代碼比較少的函數(shù)的定義,可以在類中進(jìn)行;2.代碼比較多的函數(shù)的定義,我們通常在類中進(jìn)行函數(shù)原型的說(shuō)明,在類外對(duì)函數(shù)進(jìn)行定義。53在類體內(nèi)定義函數(shù)classLocation{public:intGetX(){returnx;}};

在類中聲明,在類外定義classLocation{public:intGetX()};intLocation::GetX(){returnx;}54

Location::GetX()是成員函數(shù)的全限定名,表示GetX()是隸屬于Location類的成員函數(shù)。雙冒號(hào)::是作用域區(qū)分符,::可以不跟類名,表示全局?jǐn)?shù)據(jù)或者全局函數(shù)。

Location::GetX()視為一個(gè)整體,類名加在成員函數(shù)名前,函數(shù)的返回類型加在成員函數(shù)的全限定名之前。55主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)56三、成員函數(shù)的調(diào)用一般有兩種:對(duì)象名.函數(shù)名(實(shí)參1,實(shí)參2,…);對(duì)象指針函數(shù)名(實(shí)參1,實(shí)參2,…);57585960內(nèi)聯(lián)成員函數(shù)為了提高運(yùn)行時(shí)的效率,對(duì)于較簡(jiǎn)單的函數(shù)可以聲明為內(nèi)聯(lián)形式。內(nèi)聯(lián)函數(shù)體中不要有復(fù)雜結(jié)構(gòu)(如循環(huán)語(yǔ)句和switch語(yǔ)句)。定義方法:直接在類的內(nèi)部在類聲明中給出內(nèi)聯(lián)成員函數(shù)聲明,在類的外部提供內(nèi)聯(lián)函數(shù)的定義。60定義內(nèi)聯(lián)函數(shù)的格式如下:inlineintf_add(intx,inty){returnx+y;}關(guān)于內(nèi)聯(lián)函數(shù)的說(shuō)明:

1.不允許在內(nèi)聯(lián)函數(shù)內(nèi)使用循環(huán)和分支語(yǔ)句;2.內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在第一次調(diào)用它之前;3.所有在類體內(nèi)定義的函數(shù)都是內(nèi)聯(lián)函數(shù)6162內(nèi)聯(lián)成員函數(shù)舉例(隱式)classPoint{public:voidinit(intinitX,intinitY)

{X=initX;Y=initY;}intGetX(){returnX;}intGetY(){returnY;}private:intX,Y;};6263內(nèi)聯(lián)成員函數(shù)舉例(顯式)classPoint{public:voidInit(intinitX,intinitY);intGetX();intGetY();private:intX,Y;};inlinevoidPoint::

init(intinitX,intinitY){X=initX;Y=initY;}inlineintPoint::GetX(){returnX;}inlineintPoint::GetY(){returnY;}63顯式隱式64主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)65四、對(duì)象的定義對(duì)象的定義方法類的作用域(對(duì)象的作用域)66對(duì)象類的對(duì)象是該類的某一特定實(shí)體,即類類型的變量。聲明形式:

類名對(duì)象名;例:

ClockmyClock;67類中成員的訪問(wèn)方式類中成員互訪直接使用成員名類外訪問(wèn)使用“對(duì)象名.成員名”方式訪問(wèn)public屬性的成員6869類的作用域類是面向?qū)ο蟮捏w現(xiàn),它具有一定的數(shù)據(jù)保護(hù)功能。類的作用域就是類的保護(hù)功能的機(jī)制。類的作用域是指類的聲明部分中的一對(duì)花括號(hào)所形成的作用域。一個(gè)類的所有成員都在該類的作用域內(nèi)。70類的私有成員變量不可以在類的外部訪問(wèn),因此需要定義一個(gè)公有成員函數(shù)間接訪問(wèn)類的私有成員。71voidmain()

{

intnum=9;//定義變量

numberA;

A.num=3;//錯(cuò)誤,類的私有成員A.fun(3);

num=10;/*訪問(wèn)主函數(shù)中定義的變量num*/

}

#include<iostream.h>

classnumber//聲明類number

{

private:

intnum;

public:

voidfun(inti);//類的成員函數(shù)

};

voidnumber::fun(inti)

{

num=i;//訪問(wèn)類的私有成員

}

72分析:上面的number類中定義了一個(gè)私有成員變量num,在main()函數(shù)中對(duì)該變量進(jìn)行訪問(wèn)是錯(cuò)誤的。因?yàn)槌隽祟惖淖兞孔饔糜颉?/p>

而在fun()函數(shù)中,雖然該函數(shù)的定義在類的外部實(shí)現(xiàn),但它本身還是類的一部分。num仍然在作用域內(nèi)。在后面主程序num賦值時(shí),訪問(wèn)的是主函數(shù)中定義的變量,不是成員變量73主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)74五、構(gòu)造函數(shù)和析構(gòu)函數(shù)1、構(gòu)造函數(shù)的相關(guān)概念2、構(gòu)造函數(shù)的定義方法3、構(gòu)造函數(shù)的重載4、析構(gòu)函數(shù)5、構(gòu)造類成員6、構(gòu)造對(duì)象的順序7576由于類的封裝性,不能像普通變量一樣初始化,因此引入構(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è)默認(rèn)形式的構(gòu)造函數(shù)。允許為內(nèi)聯(lián)函數(shù)、重載函數(shù)、帶默認(rèn)形參值的函數(shù)。1、構(gòu)造函數(shù)的相關(guān)概念7677782、構(gòu)造函數(shù)的定義方法與類名同名有參,無(wú)參默認(rèn)構(gòu)造函數(shù)

構(gòu)造函數(shù)是一種特殊的成員函數(shù),它主要進(jìn)行一些初始化工作。構(gòu)造函數(shù)有以下基本性質(zhì)。

*構(gòu)造函數(shù)和類的名字相同。

*構(gòu)造函數(shù)不具有返回值。

*定義對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用構(gòu)造函數(shù)。79classpoint //聲明類

{

public:

point(inta,intb)//類的構(gòu)造函數(shù)

{

x=a;y=b;

}

private:

intx;inty;

};

80創(chuàng)建對(duì)象時(shí),構(gòu)造函數(shù)會(huì)自動(dòng)被調(diào)用。構(gòu)造函數(shù)可以帶參數(shù),也可以不帶參數(shù)。當(dāng)構(gòu)造函數(shù)有參數(shù)時(shí),創(chuàng)建對(duì)象必須指定構(gòu)造函數(shù)的參數(shù),否則,由于構(gòu)造函數(shù)得不到實(shí)參,系統(tǒng)會(huì)報(bào)錯(cuò)。81構(gòu)造函數(shù)沒(méi)執(zhí)行吧?82838485回顧86四、對(duì)象的定義對(duì)象的定義方法類的作用域(對(duì)象的作用域)8788主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)8990由于類的封裝性,不能像普通變量一樣初始化,因此引入構(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è)默認(rèn)形式的構(gòu)造函數(shù)。允許為內(nèi)聯(lián)函數(shù)、重載函數(shù)、帶默認(rèn)形參值的函數(shù)。1、構(gòu)造函數(shù)的相關(guān)概念902、構(gòu)造函數(shù)的定義方法與類名同名有參,無(wú)參默認(rèn)構(gòu)造函數(shù)

構(gòu)造函數(shù)是一種特殊的成員函數(shù),它主要進(jìn)行一些初始化工作。構(gòu)造函數(shù)有以下基本性質(zhì)。

*構(gòu)造函數(shù)和類的名字相同。

*構(gòu)造函數(shù)不具有返回值。

*定義對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用構(gòu)造函數(shù)。91classpoint //聲明類

{

public:

point(inta,intb)//類的構(gòu)造函數(shù)

{

x=a;y=b;

}

private:

intx;inty;

};

92構(gòu)造函數(shù)沒(méi)執(zhí)行吧?939495默認(rèn)構(gòu)造函數(shù)默認(rèn)構(gòu)造只是系統(tǒng)給添加的,按編譯器默認(rèn)方式去初始化對(duì)象!只要你顯示的聲明定義了無(wú)參構(gòu)造就不存在默認(rèn)之說(shuō)了,系統(tǒng)優(yōu)先調(diào)用你定義的無(wú)參構(gòu)造!96比如定義了一個(gè)classA類,里面沒(méi)有寫任何構(gòu)造函數(shù),則系統(tǒng)會(huì)自動(dòng)給你生成一個(gè)默認(rèn)構(gòu)造函數(shù)該函數(shù)是A(),該默認(rèn)構(gòu)造函數(shù)是沒(méi)有參數(shù)的,所以他同時(shí)是一個(gè)無(wú)參構(gòu)造函數(shù)。97默認(rèn)構(gòu)造函數(shù)98默認(rèn)參數(shù)的構(gòu)造函數(shù)對(duì)于有參數(shù)的構(gòu)造函數(shù),在定義對(duì)象時(shí)必須給構(gòu)造函數(shù)傳遞參數(shù)。實(shí)際情況中,雖然有些構(gòu)造函數(shù)有參數(shù),但其參數(shù)是不變的,這就是默認(rèn)參數(shù)的構(gòu)造函數(shù)。此時(shí)構(gòu)造函數(shù)的形式如下:類名(函數(shù)名)(參數(shù)1=默認(rèn)值,參數(shù)2=默認(rèn)值,…)構(gòu)造函數(shù)中的參數(shù)與普通函數(shù)的參數(shù)是一樣的,所謂的默認(rèn)參數(shù)即為該參數(shù)設(shè)置一個(gè)默認(rèn)的取值。可以為全部或者部分參數(shù)設(shè)置默認(rèn)值。

99classpoint

{

private:

intx;inty;

public:

floatdistance() //類的成員函數(shù)

{

returnsqrt(x*x+y*y);

}

point(inta=2,intb=3)//默認(rèn)參數(shù)的構(gòu)造函數(shù)

{

x=a;y=b;

}

};

100五、構(gòu)造函數(shù)和析構(gòu)函數(shù)1、構(gòu)造函數(shù)的基本概念2、構(gòu)造函數(shù)的定義方法3、構(gòu)造函數(shù)的重載4、析構(gòu)函數(shù)5、構(gòu)造類成員6、構(gòu)造對(duì)象的順序101102103104五、構(gòu)造函數(shù)和析構(gòu)函數(shù)1、構(gòu)造函數(shù)的基本概念2、構(gòu)造函數(shù)的定義方法3、構(gòu)造函數(shù)的重載4、析構(gòu)函數(shù)5、構(gòu)造類成員6、構(gòu)造對(duì)象的順序1054、析構(gòu)函數(shù)析構(gòu)函數(shù)的作用~類名()無(wú)參數(shù),無(wú)返回值完成對(duì)象被刪除前的一些清理工作。在對(duì)象的生存期結(jié)束的時(shí)刻系統(tǒng)自動(dòng)調(diào)用它,然后再釋放此對(duì)象所屬的空間。如果程序中未聲明析構(gòu)函數(shù),編譯器將自動(dòng)產(chǎn)生一個(gè)默認(rèn)的析構(gòu)函數(shù)。106107構(gòu)造函數(shù)和析構(gòu)函數(shù)舉例#include<iostream>usingnamespacestd;classPoint{public:Point(intxx,intyy);~Point();//...其他函數(shù)原型private:intX,intY;};107108Point::Point(intxx,intyy){X=xx;Y=yy;}Point::~Point(){}//...其他函數(shù)的實(shí)現(xiàn)略108108沒(méi)執(zhí)行吧?109110課本269頁(yè)

例題111112五、構(gòu)造函數(shù)和析構(gòu)函數(shù)1、構(gòu)造函數(shù)的基本概念2、構(gòu)造函數(shù)的定義方法3、構(gòu)造函數(shù)的重載4、析構(gòu)函數(shù)5、構(gòu)造類成員6、構(gòu)造對(duì)象的順序113114115五、構(gòu)造函數(shù)和析構(gòu)函數(shù)1、構(gòu)造函數(shù)的基本概念2、構(gòu)造函數(shù)的定義方法3、構(gòu)造函數(shù)的重載4、析構(gòu)函數(shù)5、構(gòu)造類成員6、構(gòu)造對(duì)象的順序1166、構(gòu)造對(duì)象的順序局部和靜態(tài)對(duì)象,以聲明的順序構(gòu)造靜態(tài)對(duì)象只被構(gòu)造一次所有的全局對(duì)象都在主函數(shù)main()之前被構(gòu)造全局對(duì)象構(gòu)造時(shí)無(wú)特殊順序成員以其在類

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論