




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
會計學1C類的精解秒用類的聲明
class
名稱
{
成員};
class
student{
charname[20];
intsex;
};//student類中定義了兩個成員變量
是不是覺得與結(jié)構(gòu)體沒什么差別,那么再看下面這個例子。
關(guān)鍵字class標識類定義第2頁/共29頁第1頁/共29頁
classstudent
{
charname[20];
intsex;
voidchangename(char*lname)
{
strcpy(name,lname);
}
voidchangesex(intlsex)
{
sex=lsex;
}
};發(fā)現(xiàn)類可以定義C語言中的結(jié)構(gòu)體不能定義的函數(shù)changename(),changesex()。
第3頁/共29頁第2頁/共29頁類的定義類的定義一般分為說明部分和實現(xiàn)部分。說明部分數(shù)據(jù)成員說明屬性成員函數(shù)說明方法第4頁/共29頁第3頁/共29頁類的成員函數(shù)的實現(xiàn)有兩種方式:在類中邊定義邊實現(xiàn)。在類中定義在類外實現(xiàn)。
請先記住有這兩種方式,具體如何實現(xiàn)后面會講到。第5頁/共29頁第4頁/共29頁類的一般定義格式class<類名>{public:<成員函數(shù)或數(shù)據(jù)成員的說明>private:<數(shù)據(jù)成員或成員函數(shù)的說明>};//分號不能忘<各個成員函數(shù)的實現(xiàn)>是不是有一個疑問,public,private指的是什么呢?第6頁/共29頁第5頁/共29頁其中,class是定義類的關(guān)鍵字。從訪問權(quán)限上來分,類的成員可以分為三種:公有的(public),私有的(private)和保護的(protected)。publicprivateprotected可以被同類的方法和類之外的方法隨意調(diào)用只能被同類中的方法訪問,其它類都不能訪問只能被同類和子類的方法訪問,其余訪問均會遭到拒絕第7頁/共29頁第6頁/共29頁classDate{public:voidSetDate(inty,intm,intd);intIsLeapYear();//只有定義,沒有實現(xiàn),需在類外實現(xiàn)voidPrint(){cout<<year<<“.”<<month<<“.”<<day<<endl;}//在類中邊定義邊實現(xiàn)private:intyear,month,day;//三個私有成員變量};函數(shù)名往往是由多個單詞組成的,習慣約定每個單詞的第一個字母用大寫字母,其余用小寫,單詞間不加任何分隔符。那么,函數(shù)在類外如何實現(xiàn)呢?Date類的定義第8頁/共29頁第7頁/共29頁類體外實現(xiàn)成員函數(shù)的格式:返回類型<類名>::<函數(shù)名>(<參數(shù)表>)::稱為作用域運算符,用來標識某個成員函數(shù)是屬于哪個類的。voidDate::SetDate(inty,intm,intd){year=y;month=m;day=d;}intDate::IsLeapYear(){return(year%4==0&&year%100!=0)||(year%400==0);}第9頁/共29頁第8頁/共29頁對象的定義
類定義完后如何使用呢?答案是通過對象,對象是類的實例。對象的定義格式:<類名><對象名表>對象名表可以一個或多個對象名,多個時用逗號分隔??梢允且话愕膶ο竺€可以是指向?qū)ο蟮闹羔樅蛯ο髷?shù)組。Datedate1,date2,*Pdate,date[31];date1,date2是一般的對象名,*Pdate是指向?qū)ο蟮闹羔槪琩ate是對象數(shù)組的數(shù)組名,它有31個元素,每個元素都是一個Date類的對象。第10頁/共29頁第9頁/共29頁對象成員的表示方法
一個對象的成員就是該對象的類所定義的成員。一般對象表示如下:<對象名>.<成員名>或<對象名>.<成員名>(<參數(shù)表>).是一個運算符,表示對象的成員。date1.year;date1.SetDate(inty,intm,intd);但是Pdate.year卻是錯的,為什么呢?
第11頁/共29頁第10頁/共29頁
對象指針的成員表示法:<對象指針名>--><成員名>或者<對象指針名>--><成員名>(<參數(shù)表>)
-->也是一個表示成員的運算符,與.的區(qū)別是:->是用來表示指向?qū)ο蟮闹羔樀某蓡T,而.用來表示一般對象的成員。Pdate-->yearPdate-->SetDate(inty,intm,intd)第12頁/共29頁第11頁/共29頁
下面兩種定義是等價的:<對象指針名>--><成員名>(*<對象指針名>).<成員名>Pdate-->SetDate(y,m,d)(*Pdate).SetDate(y,m,d)第13頁/共29頁第12頁/共29頁定義類時應注意事項在類體中不允許對所定義的數(shù)據(jù)成員進行初始化。例如:classDate{public:…private:intyear(1998),month(4),day(9);};是錯的。第14頁/共29頁第13頁/共29頁類中的數(shù)據(jù)成員的類型可以是任意的,包含整型,浮點型,字符型,數(shù)組和引用等。也可以是對象,另一個類的對象,但是自身類的對象是不可以的,而自身類的指針或引用是可以的。
第15頁/共29頁第14頁/共29頁一般地,在類體內(nèi)先說明公有成員,它們是用戶所關(guān)心的,后說明私有成員,它們是用戶不感興趣的。在說明數(shù)據(jù)成員時,一般按數(shù)據(jù)成員的類型大小,由小至大說明。成員函數(shù)可以重載,但必須滿足重載條件:參數(shù)類型不同或參數(shù)個數(shù)不同。第16頁/共29頁第15頁/共29頁對象的初始化
構(gòu)造函數(shù)和析構(gòu)函數(shù)是在類體中說明的兩種特殊的成員函數(shù)。構(gòu)造函數(shù)的功能是在創(chuàng)建對象時,使用給定的值來將對象初始化。析構(gòu)函數(shù)的功能是用來釋放一個對象的。在對象刪除前,用它來做一些清理工作,它與構(gòu)造函數(shù)的功能正好相反。加入構(gòu)造和析構(gòu)函數(shù)的Date1類如下:第17頁/共29頁第16頁/共29頁classDate1{public:Date1(inty,intm,intd);//構(gòu)造函數(shù)~Date1();//析構(gòu)函數(shù)voidPrint();private:intyear,month,day;};Date1::Date1(inty,intm,intd){year=y;month=m;day=d;cout<<“Constructorcalled.\n”;}Date1::~Date1(){cout<<“Destructorcalled.\n”;}加入構(gòu)造函數(shù)和析構(gòu)函數(shù)的Date1類第18頁/共29頁第17頁/共29頁構(gòu)造函數(shù)的特點構(gòu)造函數(shù)是成員函數(shù),函數(shù)體可寫在類體內(nèi),也可寫在類體外。構(gòu)造函數(shù)是一個特殊的函數(shù),該函數(shù)的名字與類名相同,該函數(shù)不指定類型說明??梢杂幸粋€參數(shù),也可以有多個參數(shù)。構(gòu)造函數(shù)可以重載,可以定義多個參數(shù)個數(shù)不同的函數(shù)。程序中不能直接調(diào)用構(gòu)造函數(shù),在創(chuàng)建對象時系統(tǒng)自動調(diào)用構(gòu)造函數(shù)。第19頁/共29頁第18頁/共29頁析構(gòu)函數(shù)的特點析構(gòu)函數(shù)是成員函數(shù),函數(shù)體可寫在類體內(nèi),也可以寫在類體外。析構(gòu)函數(shù)也是一個特殊的函數(shù),它的名字與類名相同,并在前面加“~”字符。析構(gòu)函數(shù)不指定數(shù)據(jù)類型,并且也沒有參數(shù)。一個類中只可能定義一個析構(gòu)函數(shù)。析構(gòu)函數(shù)可以被調(diào)用,也可以系統(tǒng)調(diào)用。在下面兩種情況下,析構(gòu)函數(shù)會被自動調(diào)用。(1)如果一個對象被定義在一個函數(shù)體內(nèi),則當這個函數(shù)結(jié)束時,該對象的析構(gòu)函數(shù)被自動調(diào)用。(2)當一個對象是使用new運算符被動態(tài)創(chuàng)建時,在使用delete運算符釋放它時,delete將會自動調(diào)用析構(gòu)函數(shù)。第20頁/共29頁第19頁/共29頁
在類定義時沒有定義任何構(gòu)造函數(shù)時,編譯器會自動生成一個不帶參數(shù)的缺省構(gòu)造函數(shù)。
voidmain(){Date1today(2009,3,13),tomorrow(2009,3,14);cout<<“todayis”;today.Print();}執(zhí)行該程序后,輸出結(jié)果是什么呢?Constructorcalled.Constructorcalled.todayis2009.3.13Destructorcalled.Destructorcalled.
第21頁/共29頁第20頁/共29頁堆對象
堆對象是指在程序運行過程中根據(jù)需要隨時可以建立或刪除的對象。需要如下兩個運算符:newdelete
第22頁/共29頁第21頁/共29頁new的用法new運算符使用格式如下:new<類型說明符>(<初始值列表>)它表明在堆中建立一個由類型說明符給定的類型的對象,并且由括號中的初始值列表給出被創(chuàng)建對象的初始值。如果省去括號中的初始值,則對象選用缺省值。new運算符返回的是一個指針,指針類型與new所分配對象相匹配,如果不匹配可以通過強制類型的方法,否則會編譯出錯。第23頁/共29頁第22頁/共29頁
new也可用來創(chuàng)建數(shù)組類型的對象,即對象數(shù)組,格式如下:new<類名>[<算術(shù)表達式>]算術(shù)表達式的值為所創(chuàng)建的對象數(shù)組的大小。A*ptr;ptr=newA[5];A是一個類名,ptr是指向類A對象的一個指針。通過newA[5]創(chuàng)建一個對象數(shù)組,該數(shù)組有5個元素。它的返回值賦給指針ptr,于是ptr便是指向?qū)ο髷?shù)組的指針。第24頁/共29頁第23頁/共29頁new還可以用來創(chuàng)建一般類型的數(shù)組。如:int*p;p=newint[10];其中,p是一個指向int型變量的的指針。使用new創(chuàng)建一個具有10個元素的一維int型數(shù)組,p指針指向這個數(shù)組。第25頁/共29頁第24頁/共29頁delete用法delete功能是用來刪除使用new創(chuàng)建的對象或一般類型的指針。格式如下:delete<指針名>如:A*ptr;ptr=newA(5,6);deleteptr;第26頁/共29頁第25頁/共29頁delete也可用來刪除使用new創(chuàng)建的對象數(shù)組,格式如下:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSM 0052-2024“領(lǐng)跑者”評價技術(shù)要求 普通型立式帶鋸床
- T-ZSA 227-2024 低慢小無人駕駛航空器車載式預警處置系統(tǒng)
- 2025年度村級林業(yè)資源監(jiān)測村級護林員職責合同
- 2025年度美甲服務連鎖品牌合作協(xié)議
- 二零二五年度汽車維修保養(yǎng)抵押借款合同
- 2025年度美發(fā)店員工勞動合同及員工福利政策
- 二零二五年度個人心理咨詢服務合同
- 2025年度消防車輛抵押借款合同范本
- 二零二五年度直播平臺用戶行為數(shù)據(jù)分析合同
- 2025年度石材石材加工定制采購協(xié)議
- 2024年湖南省岳陽市中考數(shù)學一模試卷
- DZ∕T 0080-2010 煤炭地球物理測井規(guī)范(正式版)
- 2024年國家公務員考試時事政治必考試題庫(完整版)
- 否定副詞“不”和“沒有”比較研究
- 售樓部銷售禮儀培訓內(nèi)容
- (高清版)DZT 0347-2020 礦山閉坑地質(zhì)報告編寫規(guī)范
- 2024年不停電電源UPS相關(guān)項目營銷計劃書
- 重汽重卡培訓課件
- 干式變壓器培訓課件
- 公司SWOT分析表模板
- 2023年上海中考語文試卷(附答案)
評論
0/150
提交評論