類和對(duì)象

2018-08-12 22:03 更新

類和對(duì)象

C++ 編程的主要目的是將面向?qū)ο蟮乃枷胍M(jìn)到 C 編程語(yǔ)言中,類是 C++ 的核心特征,用來(lái)支持面向?qū)ο缶幊?,類通常被稱為用戶定義的類型。

類是用于指定一個(gè)對(duì)象的形式,它將數(shù)據(jù)表示和用于處理數(shù)據(jù)的方法組合成一個(gè)整潔的包。一個(gè)類的數(shù)據(jù)和函數(shù)統(tǒng)稱為類的成員。

C++ 類的定義

當(dāng)你定義了一個(gè)類,你就定義一個(gè)數(shù)據(jù)類型的藍(lán)圖。這實(shí)際上沒(méi)有定義任何數(shù)據(jù),它只是定義了類名是什么意思,也就是意味著,一個(gè)類的對(duì)象包含什么,在這樣一個(gè)對(duì)象上可以執(zhí)行哪些操作。

定義一個(gè)類,以關(guān)鍵字 class 開(kāi)始,緊隨其后的是類名,和類的主體,類的主體由一對(duì)大括號(hào)封閉。一個(gè)類定義必須以分號(hào)或者一系類聲明結(jié)尾。例如,我們通過(guò)使用關(guān)鍵字 class 定義 Box 數(shù)據(jù)類型,如下所示:

    class Box
    {
       public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
    };

關(guān)鍵字 public 決定了緊隨其后的類的成員的訪問(wèn)屬性。一個(gè)公共成員可以從類外處于任何一個(gè)類對(duì)象范圍內(nèi)的地方訪問(wèn)。類對(duì)象的范圍內(nèi)的任何地方。您還可以指定一個(gè)類的成員為 privatepublic,我們將在一個(gè)小節(jié)中討論它們。

定義 C++ 對(duì)象

一個(gè)類為對(duì)象提供了藍(lán)圖,對(duì)象是由類創(chuàng)建而來(lái)。我們聲明一個(gè)類的對(duì)象的方式,用聲明其他基本類型變量的方式完全相同。以下語(yǔ)句聲明 Box 類的兩個(gè)對(duì)象:

    Box Box1;  // Declare Box1 of type Box
    Box Box2;  // Declare Box2 of type Box

Box1 和 Box2 對(duì)象都分別持有其各自的數(shù)據(jù)副本。

訪問(wèn)數(shù)據(jù)成員

類的對(duì)象的公共數(shù)據(jù)成員可以使用直接成員訪問(wèn)操作符:(.)訪問(wèn)。試著執(zhí)行下面的例子,能更清晰的說(shuō)明這個(gè)問(wèn)題:

    #include <iostream>

    using namespace std;

    class Box
    {
       public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
    };

    int main( )
    {
       Box Box1;// Declare Box1 of type Box
       Box Box2;// Declare Box2 of type Box
       double volume = 0.0; // Store the volume of a box here

       // box 1 specification
       Box1.height = 5.0; 
       Box1.length = 6.0; 
       Box1.breadth = 7.0;

       // box 2 specification
       Box2.height = 10.0;
       Box2.length = 12.0;
       Box2.breadth = 13.0;
       // volume of box 1
       volume = Box1.height * Box1.length * Box1.breadth;
       cout << "Volume of Box1 : " << volume <<endl;

       // volume of box 2
       volume = Box2.height * Box2.length * Box2.breadth;
       cout << "Volume of Box2 : " << volume <<endl;
       return 0;
    }

編譯和執(zhí)行上面的代碼,執(zhí)行結(jié)果如下:

    Volume of Box1 : 210
    Volume of Box2 : 1560

需要特別加以注意的是,不能使用直接成員訪問(wèn)操作符:(.) 直接訪問(wèn)私有成員和保護(hù)成員。我們將在以后學(xué)習(xí)如何訪問(wèn)私有成員和保護(hù)成員。

類與對(duì)象的細(xì)節(jié)

到目前為止,我們已經(jīng)對(duì) C++ 類和對(duì)象有了最基本的了解。還還有更多的與 C++ 類和對(duì)象相關(guān)的有趣的概念,我們將在下面列出的各個(gè)小節(jié)中討論它們:

內(nèi)容 描述
類成員函數(shù) 類的成員函數(shù)是一個(gè)函數(shù),像其他變量一樣,成員函數(shù)在類中有其定義和原型。
類的訪問(wèn)修飾符 一個(gè)類成員可以被定義為公共,私有或保護(hù)。默認(rèn)情況下成員將被假定為私有。
構(gòu)造函數(shù)和析構(gòu)函數(shù) 一個(gè)類的構(gòu)造函數(shù)是一種特殊的函數(shù),在創(chuàng)建一個(gè)類的新對(duì)象時(shí)調(diào)用它。析構(gòu)函數(shù)也是一個(gè)特殊的函數(shù),當(dāng)創(chuàng)建對(duì)象被刪除時(shí)調(diào)用它。
C++ 拷貝構(gòu)造函數(shù) 拷貝構(gòu)造函數(shù)是一個(gè)構(gòu)造函數(shù),它創(chuàng)建一個(gè)對(duì)象并用之前已經(jīng)創(chuàng)建好的一個(gè)同類的對(duì)象對(duì)其進(jìn)行初始化。
C++ 友函數(shù) 一個(gè)友(friend)函數(shù)允許完全訪問(wèn)類的私有成員和保護(hù)成員。
C++ 內(nèi)聯(lián)函數(shù) 使用一個(gè)內(nèi)聯(lián)函數(shù),編譯器試圖用函數(shù)體中的代碼替換調(diào)用函數(shù)的地方的函數(shù)名,從而達(dá)到消除函數(shù)調(diào)用時(shí)的時(shí)間開(kāi)銷(xiāo)的目的。
C++ 中的 this 指針 每個(gè)對(duì)象都有一個(gè)特殊的指針 this,它指向?qū)ο蟊旧怼?/td>
指向 C++ 類的指針 類指針和一個(gè)指向結(jié)構(gòu)的指針是以完全相同的方式實(shí)現(xiàn)的。事實(shí)上一個(gè)類就是一個(gè)在其中包含了函數(shù)的結(jié)構(gòu)體。
類的靜態(tài)成員 類的數(shù)據(jù)成員和函數(shù)成員都可以被聲明為靜態(tài)的。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)