瀏覽量:51次
在C++中最最基本的要認(rèn)識對象和類,這是初級的入門知識。blue1000.com帶大家從入門學(xué)起,我們先來認(rèn)識下類,了解下類的定義和作用。
先來簡單的介紹下“類”與“對象”的關(guān)系。類是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,它實(shí)際是一種新的數(shù)據(jù)類型,也是實(shí)現(xiàn)抽象類型的工具,因?yàn)轭愂峭ㄟ^抽象數(shù)據(jù)類型的方法來實(shí)現(xiàn)的一種數(shù)據(jù)類型。類是對某一類對象的抽象;而對象是某一種類的實(shí)例,因此,類和對象是密切相關(guān)的。沒有脫離對象的類,也沒有不依賴于類的對象。
什么是類
類是一種復(fù)雜的數(shù)據(jù)類型,它是將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。這有點(diǎn)像C語言中的結(jié)構(gòu),唯一不同的就是結(jié)構(gòu)沒有定義所說的“數(shù)據(jù)相關(guān)的操作”,“數(shù)據(jù)相關(guān)的操作”就是我們平常經(jīng)??吹降摹胺椒ā?,因此,類具有更高的抽象性,類中的數(shù)據(jù)具有隱藏性,類還具有封裝性。
類的結(jié)構(gòu)(也即類的組成)是用來確定一類對象的行為的,而這些行為是通過類的內(nèi)部數(shù)據(jù)結(jié)構(gòu)和相關(guān)的操作來確定的。這些行為是通過一種操作接口來描述的(也即平時(shí)我們所看到的類的成員函數(shù)),使用者只關(guān)心的是接口的功能(也就是我們只關(guān)心類的各個(gè)成員函數(shù)的功能),對它是如何實(shí)現(xiàn)的并不感興趣。而操作接口又被稱為這類對象向其他對象所提供的服務(wù)。
類的定義格式
類的定義格式一般地分為說明部分和實(shí)現(xiàn)部分。說明部分是用來說明該類中的成員,包含數(shù)據(jù)成員的說明和成員函數(shù)的說明。成員函數(shù)是用來對數(shù)據(jù)成員進(jìn)行操作的,又稱為“方法”。實(shí)現(xiàn)部分是用來對成員函數(shù)的定義。概括說來,說明部分將告訴使用者“干什么”,而實(shí)現(xiàn)部分是告訴使用者“怎么干”。
類的一般定義格式如下:
class <類名>
{
public:
<成員函數(shù)或數(shù)據(jù)成員的說明>
private:
<數(shù)據(jù)成員或成員函數(shù)的說明>
};
<各個(gè)成員函數(shù)的實(shí)現(xiàn)>
下面簡單地對上面的格式進(jìn)行說明:class是定義類的關(guān)鍵字,<類名>是種標(biāo)識符,通常用T字母開始的字符串作為類名。一對花括號內(nèi)是類的說明部分(包括前面的類頭)說明該類的成員。類的成員包含數(shù)據(jù)成員和成員函數(shù)兩部分。從訪問權(quán)限上來分,類的成員又分為:公有的(public)、私有的(private)和保護(hù)的(protected)三類。公有的成員用public來說明,公有部分往往是一些操作(即成員函數(shù)),它是提供給用戶的接口功能。這部分成員可以在程序中引用。私有的成員用private來說明,私有部分通常是一些數(shù)據(jù)成員,這些成員是用來描述該類中的對象的屬性的,用戶是無法訪問它們的,只有成員函數(shù)或經(jīng)特殊說明的函數(shù)才可以引用它們,它們是被用來隱藏的部分。保護(hù)類(protected)將在以后介紹。
關(guān)鍵字public,private和protected被稱為訪問權(quán)限修飾符或訪問控制修飾符。它們在類體內(nèi)(即一對花括號內(nèi))出現(xiàn)的先后順序無關(guān),并且允許多次出現(xiàn),用它們來說明類成員的訪問權(quán)限。
其中,<各個(gè)成員函數(shù)的實(shí)現(xiàn)>是類定義中的實(shí)現(xiàn)部分,這部分包含所有在類體內(nèi)說明的函數(shù)的定義。如果一個(gè)成員函數(shù)的類體內(nèi)定義了,實(shí)現(xiàn)部分將不出現(xiàn)。如果所有的成員函數(shù)都在類體內(nèi)定義,則實(shí)現(xiàn)部分可以省略。
下面給出一個(gè)日期類定義的例子:
class TDate
{
public:
void SetDate(int y, int m, int d);
int IsLeapYear();
void Print();
private:
int year, month, day;
};
//類的實(shí)現(xiàn)部分
void TDate::SetDate(int y, int m, int d)
{
year = y;
month = m;
day = d;
}
int TDate::IsLeapYear()
{
return(year%4==0 && year%100!=0) || (year%400==0);
}
void TDate::Print();
{
cout<
}
這里出現(xiàn)的作用域運(yùn)算符::是用來標(biāo)識某個(gè)成員函數(shù)是屬于哪個(gè)類的。
該類的定義還可以如下所示:
class TDate
{
public:
void SetDate(int y, int m, int d)
{year=y; month=m; day=d;}
int IsLeapYear()
{return(year%4==0 && year%100!=0) || (year%400==0);}
void Print()
{cout<
private:
int yeay, month, day;
}
這樣對成員函數(shù)的實(shí)現(xiàn)(即函數(shù)的定義)都寫在了類體內(nèi),因此類的實(shí)現(xiàn)部分被省略了。如果成員函數(shù)定義在類體外,則在函數(shù)頭的前面要加上該函數(shù)所屬類的標(biāo)識,這時(shí)使用作用域運(yùn)算符::。
定義類時(shí)應(yīng)注意的事項(xiàng)
1、在類體中不允許對所定義的數(shù)據(jù)成員進(jìn)行初始化。
2、類中的數(shù)據(jù)成員的類型可以是任意的,包含整型、浮點(diǎn)型、字符型、數(shù)組、指針和引用等。也可以是對象。另一個(gè)類的對象,可以作該類的成員,但是自身類的對象是不可以的,而自身類的指針或引用又是可以的。當(dāng)一個(gè)類的對象用為這個(gè)類的成員時(shí),如果另一個(gè)類的的定義在后,需要提前說明。
3、一般地,在類體內(nèi)先說明公有成員,它們是用戶所關(guān)心的,后說明私有成員,它們是用戶不感興趣的。在說明數(shù)據(jù)成員時(shí),一般按數(shù)據(jù)成員的類型大小,由小至大說明,這樣可提高時(shí)空利用率。
4、經(jīng)常習(xí)慣地將類定義的說明部分或者整個(gè)定義部分(包含實(shí)現(xiàn)部分)放到一個(gè)頭文件中。
(源文由長沙軟件開發(fā)站長編輯完成)原文地址:http://www.zfkjw.cn轉(zhuǎn)載請注明!
[聲明]本網(wǎng)轉(zhuǎn)載網(wǎng)絡(luò)媒體稿件是為了傳播更多的信息,此類稿件不代表本網(wǎng)觀點(diǎn),本網(wǎng)不承擔(dān)此類稿件侵權(quán)行為的連帶責(zé)任。故此,如果您發(fā)現(xiàn)本網(wǎng)站的內(nèi)容侵犯了您的版權(quán),請您的相關(guān)內(nèi)容發(fā)至此郵箱【779898168@qq.com】,我們在確認(rèn)后,會立即刪除,保證您的版權(quán)。
官網(wǎng)優(yōu)化
整站優(yōu)化
渠道代理
400-655-5776