類是物件導向程式設計的核心,是通過抽象資料型別方法實現的一種使用者自定義資料型別,它同時包含了資料和對資料進行操作的函式。利用類可以實現資料的封裝和隱藏。類是對某一類物件的抽象,而物件是某一種類的例項。
>類的定義
類的定義可以分為兩部分:說明部分和實現部分。說明部分說明類中包含的資料成員和成員函式,實現部分是對成員函式的定義。
類定義的一般格式:
class 《類名》
public:
《成員函式或資料成員的說明》 //公有成員,外部介面
protected:
《資料成員或成員函式的說明》 //保護成員
private:
《資料成員或成員函式的說明》 //私有成員
//類的實現部分
《各個成員函式的實現》
其中,class是宣告類的關鍵字;《類名》是宣告的類的名字,必須符合識別符號定義規則;花括號表示類的宣告範圍,其後的分號表示類宣告的結束。類的成員包括資料成員和成員函式,分別描述類所表達的問題的屬性和行為。關鍵字public、protected、private稱為訪問許可權修飾符,它們限制了類成員的訪問控制範圍。
各個成員函式的實現既可以在類體內定義,也可以在類體外定義。如果乙個成員函式在類體內進行了定義,它將不出現在類體的實現部分;如果所有的成員函式都在類體內進行了定義,則可以省略類的實現部分。在類體內定義的成員函式都是內聯函式。
>類成員的訪問控制
類中的成員具有不同的訪問許可權修飾符。類中提供了三種訪問控制許可權:公有(public)、私有(private)、保護(protected)。其中,公有型別定義了類的外部介面,任何來自類外部的訪問都必須通過外部介面進行;私有型別的成員只允許本類的成員函式訪問,來自類外部的任何訪問都是非法的;保護型別介於公有型別和私有型別之間,在繼承和派生時可以提現出其特點。
類中的訪問許可權修飾符可以以任意順序出現,並且可以出現多次(建議具有相同訪問許可權的放在一起),但是乙個成員只能具有一種訪問許可權。
類中成員預設的訪問許可權私有的(private)。
>類的資料成員
類中的資料成員描述類所表達的問題的屬性。資料成員在類體中進行定義,其定義方式與一般變數相同,但對資料成員的訪問要受到訪問許可權修飾符的控制。
#類中的資料成員可以是任意型別,包括整型、浮點型、字元型、陣列、指標和引用等,可以是物件。但是要注意,只有其他類的物件,才可以作為該類的成員,即作為該類的成員物件而存在。自身類的物件是不可以作為自身類的成員存在的,但自身類的指標可以。
當另外乙個類的物件作為該類的成員時,另外乙個類卻在該類的後面定義,即出現了兩個類相互引用的情況,這時就需要進行前向引用宣告。
示 例:
class b; //前向引用宣告
class a;
class b;
#在類體中不允許對所定義的資料成員進行初始化。
示 例:
class date;
>類的成員函式
類的成員函式描述類所表達的問題的行為。類中所有的成員函式都必須在類體內進行說明。但成員函式的定義既可以在類體內給出,也可以在類體外給出。
在類體內定義與定義一般函式一樣,在類外部定義的成員函式的格式:
《返回型別》《類名》::《成員函式名》(《參數列》)
《函式體》
}在類體外定義成員函式時,要注意必須在成員函式名前加上類名和作用域運算子(::)。作用域運算子用來標識某個成員屬於某個類。
作用域運算子的使用格式:
《類名》::《成員函式名》(《參數列》) 或 《類名》::《資料成員名》
成員函式的兩種定義方式之間是有差別的。如果乙個成員函式的宣告和定義都在類體內,那麼這個成員函式就是內聯函式。如果乙個成員函式的宣告在類體內,而定義在類體外,這時對該成員函式的呼叫是按一般函式進行的。如果要將定義在類體外的成員函式也作為內聯函式處理,就必須在成員函式的定義前加上關鍵字inline,以此顯式地說明該成員函式也是乙個內聯函式。
成員函式還可以進行過載,可以對其形參設定預設值。
>物件的定義
物件是類的例項,乙個物件必須屬於乙個已知的類,因此在定義物件之前,必須先定義該物件所屬的類。
格式:《類名》《物件名》(《參數列》);
其中《類名》是待定義的物件所屬的類的名字。《物件名》中可以有乙個或多個物件名,多個物件名之間用逗號分隔。《參數列》是初始化物件時需要的,建立物件時可以根據給定的引數呼叫相應的建構函式對物件進行初始化。無引數時表示呼叫類的預設建構函式。還可以定義物件陣列。指向物件的指標或引用。
>物件的成員
乙個物件的成員就是該物件的類所定義的成員,包括資料成員和成員函式。定義了物件後,可以使用「 . 」運算子和 「 -> 」運算子訪問物件的成員。其中「 . 」運算子適用於一般物件和引用物件,而「 -> 」運算子適用於指標物件(即指向物件的指標)。訪問物件成員的格式:
《物件名》.《資料成員名》 或 《物件名》 -> 《資料成員名》
《物件名》.《成員函式名》(《參數列》) 或 《物件名》 -> 《成員函式名》(《參數列》)
注:《物件名》 -> 《資料成員名》 等價於(*《物件名》).《資料成員名》
C 類 基礎知識
目錄3.2 複製建構函式 3.3 析構函式 4.類組合 class class name功能 用於在建立類時給類設定初值 形式note 在宣告中定義了預設引數時,實現中不能再指定預設引數。下面 執行會報錯 void func int x 0 void func int x 0 呼叫時機 預設建構函式...
C 類的基礎知識
類通常包括兩部分 類的內部實現和類的使用方式。當我們建立乙個類時,我們需要考慮去怎麼實現,使用的時候不需要考慮細節,不用想怎麼去實現。首先我們給出乙個簡單的類 class test int getval private int v int test getval 類裡面包含了量種不同的東語法,乙個是...
C 類的基礎知識
一 類的介紹 類是屬於使用者自定義的資料型別,並且該型別的資料具有一定的行為能力,也就是類中說描述的方法。通常來說,乙個類的定義包含兩部分的內容,一是該類的屬性,另一部分是它所擁有的方法。二 類 1 類宣告 class date 在宣告之後,定義之前,只知道date是乙個類名,但不知道包含哪些成員。...