版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
11三月2024C第十三周2類(lèi)與構(gòu)造函數(shù)11.結(jié)構(gòu)體類(lèi)型和結(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++的類(lèi)能包含數(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ì)二、類(lèi)的聲明(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)題。要求:高度概括、分類(lèi)、和抽象。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ù)類(lèi)型即是類(lèi)。類(lèi)代表著對(duì)同類(lèi)型對(duì)象進(jìn)行抽象所得到的共性。15對(duì)象與類(lèi)之間的關(guān)系:
對(duì)象是類(lèi)的實(shí)例,類(lèi)是對(duì)不同對(duì)象共同屬性的抽象!
類(lèi)與對(duì)象可以視為模板與實(shí)例之間的關(guān)系!16基本概念對(duì)象類(lèi)封裝繼承多態(tài)171.類(lèi)與對(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.繼承定義:特殊類(lèi)的對(duì)象擁有其一般類(lèi)的全部屬性與服務(wù),成為特殊類(lèi)對(duì)一般類(lèi)的繼承。優(yōu)點(diǎn):軟件復(fù)用20車(chē)子行走,載重,速度,、、、汽車(chē)燃燒油料,有輪子,自行,、、、奔馳車(chē)型,標(biāo)志、、、、215.多態(tài)多態(tài)性是指在一般類(lèi)中定義的屬性和行為,被特殊類(lèi)繼承之后,可以具有不同的數(shù)據(jù)類(lèi)型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或行為在一般類(lèi)及各個(gè)特殊類(lèi)中具有不同的語(yǔ)義。22主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類(lèi)的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)23從結(jié)構(gòu)體到類(lèi)結(jié)構(gòu)體
結(jié)構(gòu)體變量類(lèi)
對(duì)象24結(jié)構(gòu)的演化結(jié)構(gòu)由若干個(gè)元素組成,C語(yǔ)言中稱(chēng)這些結(jié)構(gòu)元素為結(jié)構(gòu)成員,C++中成為數(shù)據(jù)成員。C++的結(jié)構(gòu)中可以有函數(shù),類(lèi)確實(shí)是從結(jié)構(gòu)演變而來(lái),開(kāi)始稱(chēng)為“帶類(lè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++的類(lèi)能包含數(shù)據(jù)成員,又能包含函數(shù)成員或者成員函數(shù)。可以用如下形式描述:struct結(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ù)才能使用,這就稱(chēng)為數(shù)據(jù)的封裝性。結(jié)構(gòu)發(fā)生質(zhì)的演變27從一個(gè)結(jié)構(gòu)演變一個(gè)簡(jiǎn)單的類(lèi)其實(shí),使用關(guān)鍵字class代替struct,就是一個(gè)標(biāo)準(zhǔn)的類(lèi)。例:定義類(lèi):class結(jié)構(gòu)名{public:成員函數(shù)private:數(shù)據(jù)成員};28類(lèi)是一種用戶自定義類(lèi)型,聲明形式:class類(lèi)名稱(chēng){public:公有成員(外部接口)private:私有成員protected:保護(hù)型成員};2930類(lèi)成員訪問(wèn)控制—公有類(lèi)型成員在關(guān)鍵字public后面聲明,它們是類(lèi)與外部的接口,任何外部函數(shù)都可以訪問(wèn)公有類(lèi)型數(shù)據(jù)和函數(shù)。3031私有類(lèi)型成員在關(guān)鍵字private后面聲明,只允許本類(lèi)中的函數(shù)訪問(wèn),而類(lèi)外部的任何函數(shù)都不能訪問(wèn)。如果緊跟在類(lèi)名稱(chēng)的后面聲明私有成員,則關(guān)鍵字private可以省略。3132保護(hù)類(lèi)型與private類(lèi)似,其差別表現(xiàn)在繼承與派生時(shí)對(duì)派生類(lèi)的影響不同,后面講。32類(lèi)的聲明舉例classClock{public:
voidSetTime(intNewH,intNewM,intNewS);
voidShowTime();private:intHour,Minute,Second;};數(shù)據(jù)成員成員函數(shù)33類(lèi)與結(jié)構(gòu)體的區(qū)別:C++中,類(lèi)(class)定義中默認(rèn)情況下的成員是private的;而結(jié)構(gòu)(struct)定義中默認(rèn)情況下的成員是public的。34主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類(lèi)的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)35什么叫成員函數(shù)?根據(jù)位置分類(lèi):在類(lèi)內(nèi)部定義在類(lèi)外部定義二、定義成員函數(shù)36什么叫成員函數(shù)?為了實(shí)現(xiàn)對(duì)象的行為,我們把完成特定功能的語(yǔ)句組織成小塊程序,并注明相應(yīng)的名稱(chēng),這種組織形式的組合就構(gòu)成了成員函數(shù)。定義成員函數(shù)37定義成員函數(shù)必須具備的4個(gè)條件:1.有返回值類(lèi)型2.有函數(shù)名3.有形參列表4.有函數(shù)體其中1、2、3是構(gòu)成函數(shù)的原型381.返回值類(lèi)型函數(shù)名(類(lèi)型形參1,類(lèi)型形參2,…)2.返回值類(lèi)型函數(shù)名(類(lèi)型,類(lèi)型,…)說(shuō)明一個(gè)函數(shù)原型的一般形式有兩種:關(guān)于成員函數(shù)定義位置的說(shuō)明:1.代碼比較少的函數(shù)的定義,可以在類(lèi)中進(jìn)行;2.代碼比較多的函數(shù)的定義,我們通常在類(lèi)中進(jìn)行函數(shù)原型的說(shuō)明,在類(lèi)外對(duì)函數(shù)進(jìn)行定義。39在類(lèi)體內(nèi)定義函數(shù)classLocation{public:intGetX(){returnx;}};
在類(lèi)中聲明,在類(lèi)外定義classLocation{public:intGetX()};intLocation::GetX(){returnx;}40
Location::GetX()是成員函數(shù)的全限定名,表示GetX()是隸屬于Location類(lèi)的成員函數(shù)。雙冒號(hào)::是作用域區(qū)分符,::可以不跟類(lèi)名,表示全局?jǐn)?shù)據(jù)或者全局函數(shù)。
Location::GetX()視為一個(gè)整體,類(lèi)名加在成員函數(shù)名前,函數(shù)的返回類(lèi)型加在成員函數(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ì)象與類(lèi)之間的關(guān)系:
類(lèi)與對(duì)象的關(guān)系?45主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類(lèi)的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)46從結(jié)構(gòu)體到類(lèi)結(jié)構(gòu)體
結(jié)構(gòu)體變量類(lèi)
對(duì)象47結(jié)構(gòu)發(fā)生質(zhì)的演變1.函數(shù)與數(shù)據(jù)共存
2.封裝性3.使用關(guān)鍵字?代替?,就是把一個(gè)結(jié)構(gòu)變成一個(gè)類(lèi)48類(lèi)是一種用戶自定義類(lèi)型,聲明形式:class類(lèi)名稱(chēng){public:公有成員(外部接口)private:私有成員protected:保護(hù)型成員};49類(lèi)與結(jié)構(gòu)體的區(qū)別:C++中,類(lèi)(class)定義中默認(rèn)情況下的成員是?的;而結(jié)構(gòu)(struct)定義中默認(rèn)情況下的成員是?的。50主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類(lèi)的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)51定義成員函數(shù)必須具備的4個(gè)條件:1.有返回值類(lèi)型2.有函數(shù)名3.有形參列表4.有函數(shù)體其中1、2、3是構(gòu)成函數(shù)的原型521.返回值類(lèi)型函數(shù)名(類(lèi)型形參1,類(lèi)型形參2,…)2.返回值類(lèi)型函數(shù)名(類(lèi)型,類(lèi)型,…)說(shuō)明一個(gè)函數(shù)原型的一般形式有兩種:關(guān)于成員函數(shù)定義位置的說(shuō)明:1.代碼比較少的函數(shù)的定義,可以在類(lèi)中進(jìn)行;2.代碼比較多的函數(shù)的定義,我們通常在類(lèi)中進(jìn)行函數(shù)原型的說(shuō)明,在類(lèi)外對(duì)函數(shù)進(jìn)行定義。53在類(lèi)體內(nèi)定義函數(shù)classLocation{public:intGetX(){returnx;}};
在類(lèi)中聲明,在類(lèi)外定義classLocation{public:intGetX()};intLocation::GetX(){returnx;}54
Location::GetX()是成員函數(shù)的全限定名,表示GetX()是隸屬于Location類(lèi)的成員函數(shù)。雙冒號(hào)::是作用域區(qū)分符,::可以不跟類(lèi)名,表示全局?jǐn)?shù)據(jù)或者全局函數(shù)。
Location::GetX()視為一個(gè)整體,類(lèi)名加在成員函數(shù)名前,函數(shù)的返回類(lèi)型加在成員函數(shù)的全限定名之前。55主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類(lèi)的聲明(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ǔ)句)。定義方法:直接在類(lèi)的內(nèi)部在類(lèi)聲明中給出內(nèi)聯(lián)成員函數(shù)聲明,在類(lèi)的外部提供內(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.所有在類(lèi)體內(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ì)二、類(lèi)的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)65四、對(duì)象的定義對(duì)象的定義方法類(lèi)的作用域(對(duì)象的作用域)66對(duì)象類(lèi)的對(duì)象是該類(lèi)的某一特定實(shí)體,即類(lèi)類(lèi)型的變量。聲明形式:
類(lèi)名對(duì)象名;例:
ClockmyClock;67類(lèi)中成員的訪問(wèn)方式類(lèi)中成員互訪直接使用成員名類(lèi)外訪問(wèn)使用“對(duì)象名.成員名”方式訪問(wèn)public屬性的成員6869類(lèi)的作用域類(lèi)是面向?qū)ο蟮捏w現(xiàn),它具有一定的數(shù)據(jù)保護(hù)功能。類(lèi)的作用域就是類(lèi)的保護(hù)功能的機(jī)制。類(lèi)的作用域是指類(lèi)的聲明部分中的一對(duì)花括號(hào)所形成的作用域。一個(gè)類(lèi)的所有成員都在該類(lèi)的作用域內(nèi)。70類(lèi)的私有成員變量不可以在類(lèi)的外部訪問(wèn),因此需要定義一個(gè)公有成員函數(shù)間接訪問(wèn)類(lèi)的私有成員。71voidmain()
{
intnum=9;//定義變量
numberA;
A.num=3;//錯(cuò)誤,類(lèi)的私有成員A.fun(3);
num=10;/*訪問(wèn)主函數(shù)中定義的變量num*/
}
#include<iostream.h>
classnumber//聲明類(lèi)number
{
private:
intnum;
public:
voidfun(inti);//類(lèi)的成員函數(shù)
};
voidnumber::fun(inti)
{
num=i;//訪問(wèn)類(lèi)的私有成員
}
72分析:上面的number類(lèi)中定義了一個(gè)私有成員變量num,在main()函數(shù)中對(duì)該變量進(jìn)行訪問(wèn)是錯(cuò)誤的。因?yàn)槌隽祟?lèi)的變量作用域。
而在fun()函數(shù)中,雖然該函數(shù)的定義在類(lèi)的外部實(shí)現(xiàn),但它本身還是類(lèi)的一部分。num仍然在作用域內(nèi)。在后面主程序num賦值時(shí),訪問(wèn)的是主函數(shù)中定義的變量,不是成員變量73主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類(lèi)的聲明(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)造類(lèi)成員6、構(gòu)造對(duì)象的順序7576由于類(lèi)的封裝性,不能像普通變量一樣初始化,因此引入構(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ù)的定義方法與類(lèi)名同名有參,無(wú)參默認(rèn)構(gòu)造函數(shù)
構(gòu)造函數(shù)是一種特殊的成員函數(shù),它主要進(jìn)行一些初始化工作。構(gòu)造函數(shù)有以下基本性質(zhì)。
*構(gòu)造函數(shù)和類(lèi)的名字相同。
*構(gòu)造函數(shù)不具有返回值。
*定義對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用構(gòu)造函數(shù)。79classpoint //聲明類(lèi)
{
public:
point(inta,intb)//類(lèi)的構(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ì)象的定義方法類(lèi)的作用域(對(duì)象的作用域)8788主要內(nèi)容一、面向?qū)ο缶幊淘O(shè)計(jì)二、類(lèi)的聲明(1)數(shù)據(jù)成員(2)成員函數(shù)三、成員函數(shù)的調(diào)用四、對(duì)象的定義五、構(gòu)造函數(shù)和析構(gòu)函數(shù)8990由于類(lèi)的封裝性,不能像普通變量一樣初始化,因此引入構(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ù)的定義方法與類(lèi)名同名有參,無(wú)參默認(rèn)構(gòu)造函數(shù)
構(gòu)造函數(shù)是一種特殊的成員函數(shù),它主要進(jìn)行一些初始化工作。構(gòu)造函數(shù)有以下基本性質(zhì)。
*構(gòu)造函數(shù)和類(lèi)的名字相同。
*構(gòu)造函數(shù)不具有返回值。
*定義對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用構(gòu)造函數(shù)。91classpoint //聲明類(lèi)
{
public:
point(inta,intb)//類(lèi)的構(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類(lèi),里面沒(méi)有寫(xiě)任何構(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ù)的形式如下:類(lèi)名(函數(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() //類(lèi)的成員函數(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)造類(lèi)成員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)造類(lèi)成員6、構(gòu)造對(duì)象的順序1054、析構(gòu)函數(shù)析構(gòu)函數(shù)的作用~類(lèi)名()無(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)造類(lèi)成員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)造類(lèi)成員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ú)特殊順序成員以其在類(lèi)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職文秘(檔案管理規(guī)范)試題及答案
- 2025年中職數(shù)字媒體技術(shù)應(yīng)用(數(shù)字媒體操作)試題及答案
- 2025年大學(xué)釀酒工程(釀酒工程設(shè)計(jì))試題及答案
- 2025年高職幼兒發(fā)展與健康管理(幼兒健康評(píng)估)試題及答案
- 2025年高職工業(yè)工程技術(shù)(生產(chǎn)流程優(yōu)化)試題及答案
- 2025年中職(食品包裝技術(shù))包裝設(shè)計(jì)階段測(cè)試題及答案
- 2025年大學(xué)二年級(jí)(構(gòu)造地質(zhì)學(xué))構(gòu)造地質(zhì)學(xué)試題及答案
- 2025年大學(xué)大三(旅游企業(yè)管理)管理策略實(shí)踐測(cè)試試題及答案
- 2025年大學(xué)第四學(xué)年(工商管理)企業(yè)運(yùn)營(yíng)綜合案例試題及答案
- 2025年高職(市場(chǎng)調(diào)查與分析)調(diào)查分析階段測(cè)試題及答案
- 2025年中考數(shù)學(xué)壓軸訓(xùn)練:一次函數(shù)綜合題 (學(xué)生版)
- 操作系統(tǒng)安全基礎(chǔ)的課件
- 性激素六項(xiàng)結(jié)果解讀課件
- 2025年UOM無(wú)人機(jī)理論培訓(xùn)合格證題庫(kù)及答案
- 病案管理匯報(bào)工作
- 質(zhì)量管理部門(mén)介紹
- 江蘇省南京市南京師范大學(xué)附屬中學(xué)2025年高二上生物期末聯(lián)考試題含解析
- 炸街車(chē)檢測(cè)設(shè)備采購(gòu)服務(wù)方案投標(biāo)文件(技術(shù)方案)
- 銷(xiāo)售部安全工作總結(jié)
- 二甲醫(yī)院評(píng)審實(shí)施流程
- 機(jī)房精保潔施工方案
評(píng)論
0/150
提交評(píng)論