版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章類(lèi)和對(duì)象(一)類(lèi)對(duì)象構(gòu)造函數(shù)和析構(gòu)函數(shù)§3.1類(lèi)一、類(lèi)的定義類(lèi)是一種困難的數(shù)據(jù)類(lèi)型,它是將不同類(lèi)型的數(shù)據(jù)和這些數(shù)據(jù)相關(guān)的運(yùn)算封裝在一起的復(fù)合體?!?.1類(lèi)class<類(lèi)名>{public://公有部分<成員函數(shù)和數(shù)據(jù)成員>private://私有部分<成員函數(shù)和數(shù)據(jù)成員>protected://愛(ài)護(hù)部分<成員函數(shù)和數(shù)據(jù)成員>};說(shuō)明部分<各個(gè)成員函數(shù)的實(shí)現(xiàn)>實(shí)現(xiàn)部分出現(xiàn)的依次和次數(shù)沒(méi)有限制§3.1類(lèi)classDate{public:voidDisplay();//成員函數(shù)voidSetDate();//成員函數(shù)private://數(shù)據(jù)成員,缺省為私有部分intyear,month,day;};§3.1類(lèi)classC{…};#include“c.h”intC::fun1(){…};voidC::fun2()…類(lèi)界面(c.h)類(lèi)實(shí)現(xiàn)(c.cpp)#include“c.cpp”voidmain(){Cobj;inti;…i=obj.fun1();…}類(lèi)運(yùn)用A(a.cpp)二、訪問(wèn)權(quán)限①私有類(lèi)型成員private:只允許本類(lèi)中的函數(shù)訪問(wèn),類(lèi)外部的任何函數(shù)都不能訪問(wèn)。②公有類(lèi)型成員public:類(lèi)與外部的接口,任何外部函數(shù)都可以訪問(wèn)。③受愛(ài)護(hù)類(lèi)型成員protected:允許本類(lèi)及其派生類(lèi)中的函數(shù)訪問(wèn),類(lèi)外部的任何函數(shù)不能訪問(wèn)?!?.1類(lèi)classAccount{public:
char*name;longbalance;};//賬戶類(lèi)voidmain(){AccountJoe;Joe.balance=-20000;//取走20000
//Joe.balance=20000;//漏寫(xiě)減號(hào)}賬戶存款取款classAccount{prviate:
char*name;longbalance;
public:longgetbalance();voidcredit(long);//貸voiddebit(long);//借};//賬戶類(lèi)#include<iostream.h>classMyClass{
private: inti;
protected:intj;
public:
intk; intgeti(){returni;} intgetj(){returnj;}intgetk(){returnk;}};MyClassa;a.i//非法a.j//非法a.k//合法三、類(lèi)定義中需留意的問(wèn)題⒈在類(lèi)定義體中不允許對(duì)所定義的數(shù)據(jù)成員進(jìn)行初始化。classDate{private: intmonth=1;intday=1;intyear=1;…};§3.1類(lèi)三、類(lèi)定義中需留意的問(wèn)題⒉數(shù)據(jù)成員可以是任何數(shù)據(jù)類(lèi)型,如整型、浮點(diǎn)型、字符型、數(shù)組、指針、引用等,也可以是另外一個(gè)類(lèi)的對(duì)象或指向?qū)ο蟮闹羔?,但不能是自身?lèi)的對(duì)象。此外,數(shù)據(jù)成員不能指定為自動(dòng)(auto)、寄存器(register)和外部(extern)存儲(chǔ)類(lèi)型。classA{……};classB{private:inta;Aobja1;//正確A*obja2;//正確Bb1;//錯(cuò)誤autointb;//錯(cuò)誤externintc;//錯(cuò)誤public: ……};§3.1類(lèi)classTpoint{public:voidSetPoint(intx,inty);intXcoord(){returnX;}intYcoord(){returnY;}voidMove(intxOffset,intyOffset);private:intX,Y;};voidTpoint::SetPoint(intx,inty){X=x;Y=y;}voidTpoint::Move(intxOffset,intyOffset){X+=xOffset;Y+=yOffset;}三、類(lèi)定義中需留意的問(wèn)題3.成員函數(shù)若在類(lèi)外說(shuō)明時(shí)要加上類(lèi)名和類(lèi)作用域限定符::。一、對(duì)象的定義和運(yùn)用汽車(chē)對(duì)象汽車(chē)對(duì)象汽車(chē)對(duì)象汽車(chē)對(duì)象汽車(chē)類(lèi)§3.2對(duì)象一、對(duì)象的定義和運(yùn)用§3.2對(duì)象Windows程序設(shè)計(jì)語(yǔ)言窗口菜單按鈕對(duì)話框程序模塊其對(duì)象通常是Windows的規(guī)范部件,對(duì)象特征是具有規(guī)范形態(tài)和操作模式一、對(duì)象的定義和運(yùn)用定義格式:<類(lèi)名><對(duì)象名>;<類(lèi)名><對(duì)象名>(參數(shù)表);如:Tpointa1,d[3],*p;DateMyBirthday(8,13,1980);§3.2對(duì)象一、對(duì)象的定義和運(yùn)用一般對(duì)象的成員表示如下:<對(duì)象名>.<數(shù)據(jù)成員名><對(duì)象名>.<成員函數(shù)名>(<參數(shù)表>)如:Tpointa1;a1.x,a1.y,a1.get()§3.2對(duì)象一、對(duì)象的定義和運(yùn)用指向?qū)ο蟮闹羔樀某蓡T表示如下:<對(duì)象指針名>–﹥<數(shù)據(jù)成員名><對(duì)象指針名>–﹥<成員函數(shù)名>(<參數(shù)表>)如:Tpoint*p;
p–﹥i,p–﹥geti()或(*p).i,(*p).geti()§3.2對(duì)象1.假定MyClass是一個(gè)類(lèi),dd是它的一個(gè)對(duì)象,pp是指向dd的指針,cc是dd的引用,則對(duì)成員的訪問(wèn),對(duì)象dd可通過(guò)
進(jìn)行,指針pp可通過(guò)
進(jìn)行,引用cc可通過(guò)
進(jìn)行。練習(xí)BDBA.::B..C.&D.->2.編寫(xiě)程序,定義一個(gè)學(xué)生類(lèi)student,私有數(shù)據(jù)成員為學(xué)號(hào)num和平均分ave,公有成員函數(shù)setvalue用來(lái)設(shè)定num和ave的值,公有成員函數(shù)printvalue用來(lái)打印num和ave的值?,F(xiàn)有兩名學(xué)生學(xué)號(hào)分別為101和102,要求給定他們的平均成果,并且顯示全部信息。練習(xí)對(duì)象stud1numnamesetvalueprintvalue對(duì)象stud2numnamesetvalueprintvalue類(lèi)student公用區(qū)#include<iostream.>classstudent//定義student類(lèi){public:voidsetvalue(intn,inta){num=n;ave=a;}voidprintvalue(){cout<<“學(xué)號(hào)”<<num<<“,平均分:”<<ave<<endl;}private:intnum,ave;};voidmain(){studentstud1,stud2;//定義student類(lèi)的兩個(gè)對(duì)象stud1.setvalue(101,85);stud2.setvalue(102,92);stud1.printvalue();stud2.printvalue();}執(zhí)行結(jié)果:101,平均分:85102,平均分:92二、對(duì)象的賦值運(yùn)算賦值語(yǔ)句如下:stud2=stud1;§3.2對(duì)象對(duì)象stud1對(duì)象stud2對(duì)象stud2練習(xí):編制一個(gè)小游戲。創(chuàng)建一個(gè)寵物類(lèi)Critter,為每一個(gè)寵物指定一個(gè)饑餓級(jí)別Hunger,并且每一個(gè)寵物都能夠說(shuō)出一句問(wèn)候并向世界宣告自己的饑餓級(jí)別。§3.3構(gòu)造函數(shù)和析構(gòu)函數(shù)一、構(gòu)造函數(shù)1.構(gòu)造函數(shù)的須要性變量初始化inta=1;int*p=&a;intb[]={1,2};結(jié)構(gòu)初始化structstudent{intsemesHours;//總學(xué)時(shí)數(shù)floatgpa;//平均成果};voidfn(){students={100,3.5};}//創(chuàng)建結(jié)構(gòu)變量并初始化一、構(gòu)造函數(shù)1.構(gòu)造函數(shù)的須要性classstudent{public://…公有成員…private:intsemesHours;floatgpa;};voidfn(){students={100,3.5};}//errorvoidfn(){s.semesHours=100;s.gpa=3.5;}?§3.3構(gòu)造函數(shù)和析構(gòu)函數(shù)一、構(gòu)造函數(shù)1.構(gòu)造函數(shù)的須要性classstudent{public:voidinit(){semesHours=100;gpa=3.5;}private:intsemesHours;floatgpa;};voidfn(){students;s.init();//初始化}?§3.3構(gòu)造函數(shù)和析構(gòu)函數(shù)一、構(gòu)造函數(shù)稱(chēng)為構(gòu)造函數(shù)的成員函數(shù),在定義對(duì)象的同時(shí)依據(jù)供應(yīng)的參數(shù)個(gè)數(shù)和類(lèi)型自動(dòng)隱式地被調(diào)用,完成對(duì)象的初始化工作。構(gòu)造函數(shù)的作用就是在對(duì)象被創(chuàng)建時(shí)利用特定的值構(gòu)造對(duì)象,將對(duì)象初始化為一個(gè)特定的狀態(tài),使其具有區(qū)分于其他對(duì)象的特征。2.構(gòu)造函數(shù)的作用§3.3構(gòu)造函數(shù)和析構(gòu)函數(shù)3.構(gòu)造函數(shù)的特點(diǎn)⑴構(gòu)造函數(shù)名必需和類(lèi)名相同;⑵構(gòu)造函數(shù)沒(méi)有返回值;⑶構(gòu)造函數(shù)只能由系統(tǒng)自動(dòng)調(diào)用,其他任何過(guò)程都無(wú)法再調(diào)用它;⑷通常構(gòu)造函數(shù)被定義在公有部分;3.構(gòu)造函數(shù)的特點(diǎn)⑴構(gòu)造函數(shù)名必需和類(lèi)名相同;⑵構(gòu)造函數(shù)沒(méi)有返回值;⑶構(gòu)造函數(shù)只能由系統(tǒng)自動(dòng)調(diào)用,其他任何過(guò)程都無(wú)法再調(diào)用它;⑷通常構(gòu)造函數(shù)被定義在公有部分;⑸假如沒(méi)有定義構(gòu)造函數(shù)系統(tǒng)會(huì)自動(dòng)生成一個(gè)默認(rèn)的構(gòu)造函數(shù);Time(){hour=0;minute=0;sec=0;}classTime{public:
voidset_time();voidshow_time();private://私有數(shù)據(jù)成員inthour;intminute;intsec;};可以這樣定義對(duì)象:Timeworktime,bedtime;則兩個(gè)對(duì)象的數(shù)據(jù)成員都初始化為0缺省參數(shù)的默認(rèn)構(gòu)造函數(shù)3.構(gòu)造函數(shù)的特點(diǎn)⑴構(gòu)造函數(shù)名必需和類(lèi)名相同;⑵構(gòu)造函數(shù)沒(méi)有返回值;⑶構(gòu)造函數(shù)只能由系統(tǒng)自動(dòng)調(diào)用,其他任何過(guò)程都無(wú)法再調(diào)用它;⑷通常構(gòu)造函數(shù)被定義在公有部分;⑸假如沒(méi)有定義構(gòu)造函數(shù)系統(tǒng)會(huì)自動(dòng)生成一個(gè)默認(rèn)的構(gòu)造函數(shù);⑹構(gòu)造函數(shù)具有一般成員函數(shù)的特征,并且可以重載;3.構(gòu)造函數(shù)的特點(diǎn)⑴構(gòu)造函數(shù)名必需和類(lèi)名相同;⑵構(gòu)造函數(shù)沒(méi)有返回值;⑶構(gòu)造函數(shù)只能由系統(tǒng)自動(dòng)調(diào)用,其他任何過(guò)程都無(wú)法再調(diào)用它;⑷通常構(gòu)造函數(shù)被定義在公有部分;⑸假如沒(méi)有定義構(gòu)造函數(shù)系統(tǒng)會(huì)自動(dòng)生成一個(gè)默認(rèn)的構(gòu)造函數(shù);⑹構(gòu)造函數(shù)具有一般成員函數(shù)的特征,并且可以重載;(7)當(dāng)類(lèi)對(duì)象創(chuàng)建時(shí),構(gòu)造函數(shù)也會(huì)自動(dòng)執(zhí)行。classTpoint{public:Tpoint(intx1,inty1){x=x1;y=y1;}voiddisp(){cout<<x<<“,”<<y<<endl;}private:intx,y;};voidmain(){Tpointa(12,6);
*p=newTpoint(5,12);cout<<“FirstPoint=>”;a.disp();cout<<“SecondPoint=>”;p->disp();}FirstPoint=>12,6SecondPoint=>5,12一、構(gòu)造函數(shù)復(fù)制構(gòu)造函數(shù)常用于將一個(gè)已知對(duì)象的數(shù)據(jù)成員復(fù)制給正在創(chuàng)建的另一個(gè)同類(lèi)的對(duì)象。復(fù)制構(gòu)造函數(shù)可以像其他構(gòu)造函數(shù)一樣定義和運(yùn)用。4.復(fù)制構(gòu)造函數(shù)§3.3構(gòu)造函數(shù)和析構(gòu)函數(shù)類(lèi)名::復(fù)制構(gòu)造函數(shù)(類(lèi)名&引用名)classTpoint{public:Tpoint(intx1,inty1){x=x1;y=y1;}Tpoint(Tpoint&obj)
{x=obj.x;y=obj.y;}
voiddisp(){cout<<x<<“,”<<y<<endl;}private:intx,y;};voidmain(){Tpointa(12,16),b(a);cout<<“FirstPoint=>”;a.disp();cout<<“SecondPoint=>”;b.disp();}FirstPoint=>12,16SecondPoint=>12,16練習(xí):編制一個(gè)小游戲。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年長(zhǎng)治職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試備考試題含詳細(xì)答案解析
- 2026年烏蘭察布職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試備考題庫(kù)含詳細(xì)答案解析
- 2026年河南水利與環(huán)境職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)含詳細(xì)答案解析
- 2026年忻州職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試備考題庫(kù)含詳細(xì)答案解析
- 2026年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 外匯管理知識(shí)
- 2026年山東城市建設(shè)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試模擬試題及答案詳細(xì)解析
- 2026年廣東南華工商職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試模擬試題及答案詳細(xì)解析
- 2026年黑龍江農(nóng)墾職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)含詳細(xì)答案解析
- (一模)蚌埠市2026屆高三年級(jí)第一次教學(xué)質(zhì)量檢查歷史試卷(含答案)
- GB/T 46886-2025智能檢測(cè)裝備通用技術(shù)要求
- 護(hù)理護(hù)理科研與論文寫(xiě)作
- 2025年健康體檢中心服務(wù)與質(zhì)量管理手冊(cè)
- 2025-2030中國(guó)駱駝市場(chǎng)前景規(guī)劃與投資運(yùn)作模式分析研究報(bào)告
- 2026中國(guó)電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 鋼結(jié)構(gòu)玻璃雨棚安裝施工方案
- 鄂爾多斯輔警考試題型及答案
- 《中華人民共和國(guó)危險(xiǎn)化學(xué)品安全法》全套解讀
- 房建工程電氣安裝施工方案
- 同等學(xué)力申碩公共管理真題及答案
- 2025初三英語(yǔ)中考英語(yǔ)滿分作文
評(píng)論
0/150
提交評(píng)論