C++ 類(lèi) & 對(duì)象

2022-06-13 15:19 更新

C++ 類(lèi) & 對(duì)象

C++ 在 C 語(yǔ)言的基礎(chǔ)上增加了面向?qū)ο缶幊?,C++ 支持面向?qū)ο蟪绦蛟O(shè)計(jì)。類(lèi)是 C++ 的核心特性,通常被稱(chēng)為用戶(hù)定義的類(lèi)型。

類(lèi)用于指定對(duì)象的形式,它包含了數(shù)據(jù)表示法和用于處理數(shù)據(jù)的方法。類(lèi)中的數(shù)據(jù)和方法稱(chēng)為類(lèi)的成員。函數(shù)在一個(gè)類(lèi)被稱(chēng)為類(lèi)的成員。

C++ 類(lèi)定義

定義一個(gè)類(lèi),本質(zhì)上是定義一個(gè)數(shù)據(jù)類(lèi)型的藍(lán)圖。這實(shí)際上并沒(méi)有定義任何數(shù)據(jù),但它定義了類(lèi)的名稱(chēng)意味著什么,也就是說(shuō),它定義了類(lèi)的對(duì)象包括了什么,以及可以在這個(gè)對(duì)象上執(zhí)行哪些操作。

類(lèi)定義是以關(guān)鍵字 class 開(kāi)頭,后跟類(lèi)的名稱(chēng)。類(lèi)的主體是包含在一對(duì)花括號(hào)中。類(lèi)定義后必須跟著一個(gè)分號(hào)或一個(gè)聲明列表。例如,我們使用關(guān)鍵字 class 定義 Box 數(shù)據(jù)類(lèi)型,如下所示:

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

關(guān)鍵字 public 確定了類(lèi)成員的訪(fǎng)問(wèn)屬性。在類(lèi)對(duì)象作用域內(nèi),公共成員在類(lèi)的外部是可訪(fǎng)問(wèn)的。您也可以指定類(lèi)的成員為 privateprotected,這個(gè)我們稍后會(huì)進(jìn)行講解。

定義 C++ 對(duì)象

類(lèi)提供了對(duì)象的藍(lán)圖,所以基本上,對(duì)象是根據(jù)類(lèi)來(lái)創(chuàng)建的。聲明類(lèi)的對(duì)象,就像聲明基本類(lèi)型的變量一樣。下面的語(yǔ)句聲明了類(lèi) Box 的兩個(gè)對(duì)象:

Box Box1;          // 聲明 Box1,類(lèi)型為 Box
Box Box2;          // 聲明 Box2,類(lèi)型為 Box

對(duì)象 Box1 和 Box2 都有它們各自的數(shù)據(jù)成員。

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

類(lèi)的對(duì)象的公共數(shù)據(jù)成員可以使用直接成員訪(fǎng)問(wèn)運(yùn)算符 (.) 來(lái)訪(fǎng)問(wèn)。為了更好地理解這些概念,讓我們嘗試一下下面的實(shí)例:

#include <iostream>

using namespace std;

class Box
{
   public:
      double length;   // 長(zhǎng)度
      double breadth;  // 寬度
      double height;   // 高度
};

int main( )
{
   Box Box1;        // 聲明 Box1,類(lèi)型為 Box
   Box Box2;        // 聲明 Box2,類(lèi)型為 Box
   double volume = 0.0;     // 用于存儲(chǔ)體積
 
   // box 1 詳述
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;

   // box 2 詳述
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;

   // box 1 的體積
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Box1 的體積:" << volume <<endl;

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

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

Box1 的體積:210
Box2 的體積:1560

需要注意的是,私有的成員和受保護(hù)的成員不能使用直接成員訪(fǎng)問(wèn)運(yùn)算符 (.) 來(lái)直接訪(fǎng)問(wèn)。我們將在后續(xù)的教程中學(xué)習(xí)如何訪(fǎng)問(wèn)私有成員和受保護(hù)的成員。

類(lèi) & 對(duì)象詳解

到目前為止,我們已經(jīng)對(duì) C++ 的類(lèi)和對(duì)象有了基本的了解。下面的列表中還列出了其他一些 C++ 類(lèi)和對(duì)象相關(guān)的概念,可以點(diǎn)擊相應(yīng)的鏈接進(jìn)行學(xué)習(xí)。

概念 描述
類(lèi)成員函數(shù) 類(lèi)的成員函數(shù)是指那些把定義和原型寫(xiě)在類(lèi)定義內(nèi)部的函數(shù),就像類(lèi)定義中的其他變量一樣。
類(lèi)訪(fǎng)問(wèn)修飾符 類(lèi)成員可以被定義為 public、private 或 protected。默認(rèn)情況下是定義為 private。
構(gòu)造函數(shù) & 析構(gòu)函數(shù) 類(lèi)的構(gòu)造函數(shù)是一種特殊的函數(shù),在創(chuàng)建一個(gè)新的對(duì)象時(shí)調(diào)用。類(lèi)的析構(gòu)函數(shù)也是一種特殊的函數(shù),在刪除所創(chuàng)建的對(duì)象時(shí)調(diào)用。
C++ 拷貝構(gòu)造函數(shù) 拷貝構(gòu)造函數(shù),是一種特殊的構(gòu)造函數(shù),它在創(chuàng)建對(duì)象時(shí),是使用同一類(lèi)中之前創(chuàng)建的對(duì)象來(lái)初始化新創(chuàng)建的對(duì)象。
C++ 友元函數(shù) 友元函數(shù)可以訪(fǎng)問(wèn)類(lèi)的 private 和 protected 成員。
C++ 內(nèi)聯(lián)函數(shù) 通過(guò)內(nèi)聯(lián)函數(shù),編譯器試圖在調(diào)用函數(shù)的地方擴(kuò)展函數(shù)體中的代碼。
C++ 中的 this 指針 每個(gè)對(duì)象都有一個(gè)特殊的指針 this,它指向?qū)ο蟊旧怼?/td>
C++ 中指向類(lèi)的指針 指向類(lèi)的指針?lè)绞饺缤赶蚪Y(jié)構(gòu)的指針。實(shí)際上,類(lèi)可以看成是一個(gè)帶有函數(shù)的結(jié)構(gòu)。
C++ 類(lèi)的靜態(tài)成員 類(lèi)的數(shù)據(jù)成員和函數(shù)成員都可以被聲明為靜態(tài)的。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)