查看匯總:2014年計(jì)算機(jī)二級(jí)C++考點(diǎn)歸納
6.1 類的定義
1類的定義
類的定義可以分為兩部分:說(shuō)明部分和實(shí)現(xiàn)部分。說(shuō)明部分說(shuō)明類中包含的數(shù)據(jù)成員和成員函數(shù),實(shí)現(xiàn)部分是對(duì)成員函數(shù)的定義。類定義的一般格式如下:
//類的說(shuō)明部分
class<類名>
{
public:
<成員函數(shù)或數(shù)據(jù)成員的說(shuō)明> //公有成員,外部接口
protected:
<數(shù)據(jù)成員或成員函數(shù)的說(shuō)明> //保護(hù)成員
private:
<數(shù)據(jù)成員或成員函數(shù)的說(shuō)明> //私有成員
。;
//類的實(shí)現(xiàn)部分
<各個(gè)成員函數(shù)的實(shí)現(xiàn)>
其中,class是聲明類的關(guān)鍵字;<類名>是要聲明的類的名字,必須符合標(biāo)識(shí)符定義規(guī)則;花括號(hào)表示類的聲明范圍,說(shuō)明該類的成員,其后的分號(hào)表示類聲明結(jié)束。類的成員包括數(shù)據(jù)成員和成員函數(shù),分別描述類所表達(dá)的問(wèn)題的屬性和行為。關(guān)鍵字public、private和protected稱為訪問(wèn)權(quán)限修飾符,它們限制了類成員的訪問(wèn)控制范圍。
各個(gè)成員函數(shù)的實(shí)現(xiàn)即可以在類體內(nèi)定義,也可以在類體外定義。如果一個(gè)成員函數(shù)在類體內(nèi)進(jìn)行了定義,它將不出現(xiàn)在類的實(shí)現(xiàn)部分;如果所有的成員函數(shù)都在類體內(nèi)進(jìn)行了定義,則可以省略類的實(shí)現(xiàn)部分。在類體內(nèi)定義的成員函數(shù)都是內(nèi)聯(lián)函數(shù)。
2類成員的訪問(wèn)控制
類中提供了3種訪問(wèn)控制權(quán)限:公有(public)、私有(private)和保護(hù)(protected)。其中,公有類型定義了類的外部接口,任何一個(gè)外部的訪問(wèn)都必須通過(guò)外部接口進(jìn)行;私有類型的成員只允許本類的成員函數(shù)訪問(wèn),來(lái)自類外部的任何訪問(wèn)都是非法的;保護(hù)類型介于公有類型和私有類型之間,在繼承和派生時(shí)可以體現(xiàn)出其特點(diǎn)。
3類的數(shù)據(jù)成員
類中的數(shù)據(jù)成員描述類所表達(dá)的問(wèn)題的屬性。數(shù)據(jù)成員在類體中進(jìn)行定義,其定義方式與一般變量相同,但對(duì)數(shù)據(jù)成員的訪問(wèn)要受到訪問(wèn)權(quán)限修飾符的控制。
在定義類的數(shù)據(jù)成員時(shí),要注意以下幾個(gè)問(wèn)題。
(1)類中的數(shù)據(jù)成員可以是任意類型,包括整型、浮點(diǎn)型、字符型、數(shù)組、指針和引用等,也可以是對(duì)象。但是要注意,只有另外一個(gè)類的對(duì)象,才可以作為該類的成員,即作為該類的成員對(duì)象而存在。自身類的對(duì)象是不可以作為自身類的成員存在的,但自身類的指針可以。
(2)在類體中不允許對(duì)所定義的數(shù)據(jù)成員進(jìn)行初始化。
4類的成員函數(shù)
類的成員函數(shù)描述類所表達(dá)的問(wèn)題的行為。類中所有的成員函數(shù)都必須在類體內(nèi)進(jìn)行說(shuō)明。但成員函數(shù)的定義既可以在類體內(nèi)給出,也可以在類體外給出。
第一種方式是將成員函數(shù)直接定義在類的內(nèi)部。
第二種方式是在類聲明中給出對(duì)成員函數(shù)的說(shuō)明,而在類外部對(duì)成員函數(shù)進(jìn)行定義(但成員函數(shù)仍然在類范圍內(nèi))。這種在類外部定義的成員函數(shù)的一般格式是:
<返回類型><類名>::<成員函數(shù)名>(<參數(shù)表>)
{
<函數(shù)體>
。
在類體外定義成員函數(shù)時(shí),要注意必須在成員函數(shù)名前加上類名和作用域運(yùn)算符(::)。作用域運(yùn)算符用來(lái)標(biāo)識(shí)某個(gè)成員屬于某個(gè)類。作用域運(yùn)算符的使用格式如下:
<類名>::<成員函數(shù)名>(<參數(shù)表>) 或 <類名>::<數(shù)據(jù)成員名>
成員函數(shù)的兩種定義方式之間是有差別的。如果一個(gè)成員函數(shù)的聲明和定義都在類體內(nèi),那么這個(gè)成員函數(shù)就是內(nèi)聯(lián)函數(shù)。如果一個(gè)成員函數(shù)的聲明在類體內(nèi),而定義在類體外,這時(shí)對(duì)該成員函數(shù)的調(diào)用是按一般函數(shù)進(jìn)行的。如果要將定義在類體外的成員函數(shù)也作為內(nèi)聯(lián)函數(shù)處理,就必須在成員函數(shù)的定義前加上關(guān)鍵字“inline”,以此顯式地說(shuō)明該成員函數(shù)也是一個(gè)內(nèi)聯(lián)函數(shù)。
成員函數(shù)除了可以定義為內(nèi)聯(lián)函數(shù)以外,也可以進(jìn)行重載,可以對(duì)其參數(shù)設(shè)置默認(rèn)值。
編輯推薦:
2014年上半年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間預(yù)告
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |