每乙個實體都是物件。有一些物件是具有相同的結構和特性的。每個物件都屬於乙個特定的型別。在c++中物件的型別稱為類(class )。類代表了某一批物件的共性和特徵。前面已說明:類是物件的抽象,而物件是類的具體例項(instance)。正如同結構體型別和結構體變數的關係一樣,人們先宣告乙個結構體型別,然後用它去定義結構體變數。同乙個結構體型別可以定義出多個不同的結構體變數。
在c++中也是先宣告乙個類型別,然後用它去定義若干個同型別的物件。物件就是類型別的乙個變數。可以說類是物件的模板,是用來定義物件的一種抽象型別。類是抽象的,不占用記憶體,而物件是具體的,占用儲存空間。
在一開始時弄清物件和類的關係是十分重要的。
類是使用者自己指定的型別。如果程式中要用到類型別,必須自己根據需要進行宣告,或者使用別人已設計好的類。c++標準本身並不提供現成的類的名稱、結構和內容。
在c++中宣告乙個類型別和宣告乙個結構體型別是相似的。
下面是宣告乙個結構體型別的方法:
struct student //宣告了乙個名為student的結構體型別
; student stud1,stud2; //定義了兩個結構體變數stud1和stud2,它只包括資料,沒有包括操作。
現在宣告乙個類:
class student //以class開頭
;
private和public稱為成員訪問限定符(member access specifier)。除了private和public之外,還有一種成員訪問限定符protected(受保護的),用protected宣告的成員稱為受保護的成員,它不能被類外訪問(這點與私有成員類似),但可以被派生類的成員函式訪問。
在宣告類型別時,宣告為private的成員和宣告為public的成員的次序任意,既可以先出現private部分,也可以先出現public部分。如果在類體中既不寫關鍵字private,又不寫public,就預設為private。
在乙個類體中,關鍵字private和public可以分別出現多次。每個部分的有效範圍到出現另乙個訪問限定符或類體結束時(最後乙個右花括號)為止。但是為了使程式清晰,應該養成這樣的習慣: 使每一種成員訪問限定符在類定義體中只出現一次。
在以前的c++程式中,常先出現private部分,後出現public部分,如上面所示。現在的c++ 程式多數先寫public部分,把private部分放在類體的後部。這樣可以使使用者將注意力集中在能被外界呼叫的成員上,使閱讀者的思路更清晰一些。
在c++程式中,經常可以看到類。為了使用者方便,常用的c++編譯系統往往向使用者提供類庫(但不屬於c++語言的組成部分),內裝常用的基本的類,供使用者使用。不少使用者也把自己或本單位經常用到的類放在乙個專門的類庫中,需要用時直接呼叫,這樣就減少了程式設計的工作量。
經過定義後,stud1和stud2就成為具有student類特徵的物件。stud1和stud2這兩個物件都分別包括student類中定義的資料和函式。
定義物件也可以有以下幾種方法:
先宣告類型別,然後再定義物件前面用的就是這種方法,如student stud1,stud2;//student是已經宣告的類型別在c++中,宣告了類型別後,定義物件有兩種形式。 (1)class 類名 物件名 如 class student stud1,stud2; 把class和student合起來作為乙個類名,用來定義物件。 (2)類名 物件名 如 student stud1,stud2; 直接用類名定義物件。 這兩種方法是等效的。第1種方法是從c語言繼承下來的,第2種方法是c++的特色,顯然第2種方法更為簡捷方便。
在宣告類型別的同時定義物件class student//宣告類型別stud1,stud2;//定義了兩個無類名的類物件 直接定義物件,在c++中是合法的、允許的,但卻很少用,也不提倡用。在實際的程式開發中,一般都採用上面3種方法中的第1種方法。在小型程式中或所宣告的類只用於本程式時,也可以用第2種方法。在定義乙個物件時,編譯系統會為這個物件分配儲存空間,以存放物件中的成員。
c++增加了class型別後,仍保留了結構體型別(struct ),而且把它的功能也擴充套件了。c++允許用struct來定義乙個型別。如可以將前面用關鍵字class宣告的類型別改為用關鍵字struct:
struct student //用關鍵字struct來宣告乙個類型別
{
private: //宣告以下部分為私有的
int num;//以下3行為資料成員
char name[20];
char ***;
public: //宣告以下部分為公用的
void display( ) //成員函式
{
cout<<″num:″《為了使結構體型別也具有封裝的特徵,c++不是簡單地繼承c的結構體,而是使它也具有類的特點,以便於用於物件導向程式設計。用struct宣告的結構體型別實際上也就是類。用struct宣告的類,如果對其成員不作private或public的宣告,系統將其預設為public。
如果想分別指定私有成員和公用成員,則應用private或public作顯式宣告。而用class定義的類,如果不作private或public宣告,系統將其成員預設為private,在需要時也可以自己用顯式宣告改變。如果希望成員是公用的,使用struct比較方便,如果希望部分成員是私有的,宜用class。建議盡量使用class來建立類,寫出完全體現c++風格的程式。
C 中的類和物件
c 既是物件導向也是面向過程的語言。在這裡有乙個重要的概念 類。何謂類?類是對物件的一種抽象,舉例來講 每乙個實實在在存在的人就是乙個物件,人有很多共同的特徵 乙個頭,兩條腿,能走,能跑 這具有共同特徵的人就成為乙個類。類是乙個抽象的名詞,每乙個人 即物件 是這個類的例項。物件間具有的共同特徵是物件...
C 中的類和物件
c語言與c 均是兩門非常高深及優秀的語言,二者具有類似的地方,但是相較與他們之間的區別來說呢,也就不那麼重要了,c 在c語言的基礎上增加了物件導向的程式設計模式。物件導向 用非常接近實際領域術語的方法把系統構造成 現實世界 的物件。類的關鍵字 class c 的主體是以類和物件構成的,利用類來將 現...
C 中的類和物件
c 中的類和物件 物件導向程式設計的基本特點 抽象,封裝,繼承和多型 1 抽象 對同一類物件的共同屬性和行為進行概括,形成類 抽象包括 資料抽象和 抽象 2 封裝 將抽象出來的資料和 封裝在一起,形成類,用class 實現封裝 類的封裝使得使用者在呼叫類的外部介面時只需要關心介面的功能即可,而不需要...