千圖主站的功能介紹網(wǎng)店運營推廣
C++中類的聲明
假設您要編寫一個模擬人(如您自己)的程序。人有其特征:姓名、出生日期、出生地和性別(這些信息讓每個人都是獨一無二的),還能做某些事情,如交談、自我介紹等。
要在程序中模擬人,需要一個結構,將定義人的屬性(數(shù)據(jù))以及人可使用這些屬性執(zhí)行的操作(函數(shù))整合在一起。這種結構就是類。
要聲明類,可使用關鍵字 class,并在它后面依次包含類名,一組放在{}內(nèi)的成員屬性和成員函數(shù),以及結尾的分號。
class 類名;
我們可以僅僅聲明類而暫時不定義它,這種聲明被稱為前向聲明。在它聲明之后定義之前該類是個不完全類型。
不完全類型只能在非常有限的情況下使用:可以定義指向這種類型的指針或引用,也可以作為一個已經(jīng)聲明(但沒有定義)的函數(shù)的參數(shù)或返回類型。
對于一個類來說,在創(chuàng)建它的對象前必須首先完成類的定義,而不能僅僅被聲明。否則編譯器就無法了解這樣的對象需要多少存儲空間。類似的,類也必須首先被定義,然后才能用引用或者指針訪問其成員。
對于類的靜態(tài)成員,直到類被定義之后數(shù)據(jù)成員才能被聲明成這種類類型。我們必須首先完成類的定義,然后編譯器才能知道存儲該數(shù)據(jù)成員需要多少空間。因為只有當類全部完成后類才算被定義,所以一個類的成員類型不能是該類自己。然而,一旦一個類的名字出現(xiàn)后,它就被認為是聲明過了(但尚未定義),因此類允許包含指向它自身類型的引用或指針。
類聲明將類本身及其屬性告訴編譯器。類聲明本身并不能改變程序的行為,必須要使用類,就像需要調(diào)用函數(shù)一樣。
模擬人類的類類似于下面這樣(請暫時不要考慮其中的語法):
class Human
{// Member attributes:string name;string dateOfBirth;string placeOfBirth;string gender;// Member functions:void Talk(string textToTalk);void IntroduceSelf();...
};
不用說,IntroduceSelf()
將使用 Talk()
以及封裝在類 Human 中的一些數(shù)據(jù)。通過關鍵字 class, C++ 提供了一種功能強大的方式,讓您能夠創(chuàng)建自己的數(shù)據(jù)類型,并在其中封裝屬性和使用它們的函數(shù)。
類的所有屬性(這里是 name、 dateOfBirth、 placeOfBirth 和 gender)以及在其中聲明的函數(shù)(Talk()
和 IntroduceSelf( )
)都是類(Human)的成員。
封裝指的是將數(shù)據(jù)以及使用它們的函數(shù)進行邏輯編組,這是面向?qū)ο缶幊痰闹匾卣鳌?/p>
該文章會更新,歡迎大家批評指正。
推薦一個零聲學院的C++服務器開發(fā)課程,個人覺得老師講得不錯,
分享給大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,
TCP/IP,協(xié)程,DPDK等技術內(nèi)容
點擊立即學習:C/C++后臺高級服務器課程