官术网_书友最值得收藏!

3.1 類的定義

類是面向?qū)ο蟪绦蛟O(shè)計的核心,是進行封裝和數(shù)據(jù)隱藏的工具。具體到代碼上,類是邏輯上有關(guān)的函數(shù)及其數(shù)據(jù)的集合,它主要不是用于執(zhí)行,而是提供所需要的資源。在使用一個類之前必須先定義類,定義一個類包含兩個步驟:一是說明類體中的成員;二是實現(xiàn)類體中的函數(shù)。

類將數(shù)據(jù)表示和操作數(shù)據(jù)的函數(shù)組合在一起,下面來看一個用于描述平面上一點的類。

首先,考慮如何表示平面上一個點,可以用直角坐標系中的x軸和y軸上的兩個數(shù)值分別表示平面上一個點的橫坐標與縱坐標,如果想要在程序開始時指定這個點的坐標,可以通過定義一個函數(shù)來實現(xiàn)這種操作,而類就是將數(shù)據(jù)和操作封裝在一起,如圖3.1所示。

在圖3.1中,x0y0就表示直角坐標系中的x軸和y軸上的兩個數(shù)值,函數(shù)init()表示初始化一個點的坐標的操作,函數(shù)GetX()表示獲取這個點的橫坐標,函數(shù)GetY()表示獲取這個點的縱坐標,通常將對類中數(shù)據(jù)操作的函數(shù)稱為接口。因此,說明類體中的成員就是要說明它包含哪些成員,每個成員是什么類型。

圖3.1 說明類體中的成員

從上面的示例中可以歸納出說明類體中成員的語法,其語法格式如下:

其中,class是關(guān)鍵字,class之后是要定義的類名。類中的數(shù)據(jù)和函數(shù)都是類的成員,分別稱為數(shù)據(jù)成員和成員函數(shù)。數(shù)據(jù)成員用來描述類狀態(tài)等屬性,由于數(shù)據(jù)成員常用變量來定義,因此有時又將這樣的數(shù)據(jù)成員稱為成員變量。成員函數(shù)用來對數(shù)據(jù)成員進行操作,又稱方法。注意,類體中大括號“}”后面的分號“;”不能省略。

類中關(guān)鍵字public、protected和private說明了類中成員與類外之間的關(guān)系,稱為訪問權(quán)限,如表3.1所示。

表3.1 訪問權(quán)限及含義

在說明類體中的成員時,也可以不定義成員的訪問權(quán)限,如果不定義,則默認為private。另外,在類體中,public、protected和private出現(xiàn)的順序與次數(shù)都是任意的。一般來說,比較好的格式是將公有成員都放在最前面,以突出用戶接口,私有成員放在后面。

在C++中也可以定義有struct和union說明的類,只是很少使用,其也可以定義成員的訪問權(quán)限,當成員的訪問權(quán)限不定義時,默認是public的。

說明類體中的成員只是對其中的成員函數(shù)進行了函數(shù)聲明,因此還必須在程序中定義這些成員函數(shù)的實現(xiàn),具體示例如下:

其中,“::”稱為作用域運算符,“類名::”表示其后的成員函數(shù)是在類體中被聲明過的。在成員函數(shù)體內(nèi)可以對類中的任何成員直接使用,不論是公有的還是私有的、保護的,也可以調(diào)用系統(tǒng)提供的庫函數(shù),以及其他已定義的一些普通函數(shù)。

例如,定義一個用于描述平面上一點的類,具體示例如下:

在上例中,簡單的成員函數(shù)經(jīng)常定義成內(nèi)聯(lián)函數(shù),定義的方法有兩種:一種是在說明類體時,直接在類體內(nèi)部定義函數(shù)體,系統(tǒng)將自動把這個函數(shù)當成內(nèi)聯(lián)函數(shù);另一種是在類體外通過inline關(guān)鍵字定義。

主站蜘蛛池模板: 淅川县| 灵台县| 宝清县| 蚌埠市| 西乡县| 博爱县| 新疆| 合作市| 莱芜市| 肥城市| 奈曼旗| 鹤峰县| 合阳县| 辛集市| 昌邑市| 光泽县| 凭祥市| 贵阳市| 楚雄市| 永登县| 晋州市| 余庆县| 桂平市| 红原县| 砀山县| 清苑县| 文安县| 军事| 库车县| 陕西省| 增城市| 潜山县| 黔西| 贡觉县| 桑植县| 南京市| 旬邑县| 获嘉县| 娄烦县| 蒲城县| 祁门县|