C++ 類和物件



C++ 程式設計的主要目的是為 C 程式語言新增面向物件特性,而類是支援面向物件程式設計的 C++ 的核心特性,通常稱為使用者定義型別。

類用於指定物件的格式,它將資料表示和操縱該資料的方法組合到一個簡潔的包中。類中的資料和函式稱為類的成員。

C++ 類定義

定義類時,定義的是資料型別的藍圖。這實際上並沒有定義任何資料,但它確實定義了類名的含義,即類的物件將包含什麼以及對這樣的物件可以執行哪些操作。

類定義以關鍵字`class`後跟類名開頭;類體用一對大括號括起來。類定義後面必須跟分號或宣告列表。例如,我們使用關鍵字`class`定義了 Box 資料型別,如下所示:

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

關鍵字`public`確定其後類成員的訪問屬性。公共成員可以在類的物件作用域內的任何地方從類外部訪問。您還可以將類的成員指定為`private`或`protected`,我們將在一個小節中討論。

定義 C++ 物件

類為物件提供藍圖,因此基本上物件是從類建立的。我們宣告類的物件的方式與宣告基本型別的變數完全相同。以下語句聲明瞭 Box 類的兩個物件:

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

Box1 和 Box2 兩個物件都將擁有自己的一份資料成員副本。

訪問資料成員

可以使用直接成員訪問運算子 (.) 訪問類的物件的公共資料成員。讓我們嘗試以下示例來說明:

#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;
}

編譯並執行上述程式碼後,將產生以下結果:

Volume of Box1 : 210
Volume of Box2 : 1560

需要注意的是,不能使用直接成員訪問運算子 (.) 直接訪問私有和受保護的成員。我們將學習如何訪問私有和受保護的成員。

詳細介紹類和物件

到目前為止,您已經對 C++ 類和物件有了非常基本的瞭解。還有更多關於 C++ 類和物件的有趣概念,我們將在下面列出的各個小節中討論:

序號 概念和描述
1 類成員函式

類的成員函式是在類定義中定義或宣告其原型的函式,就像任何其他變數一樣。

2 類訪問修飾符

類成員可以定義為 public、private 或 protected。預設情況下,成員將被假定為 private。

3 建構函式和解構函式

類的建構函式是類中的一種特殊函式,在建立類的新的物件時呼叫。解構函式也是一個特殊函式,在建立的物件被刪除時呼叫。

4 複製建構函式

複製建構函式是一個建構函式,它透過使用先前建立的相同類的物件來初始化物件來建立物件。

5 友元函式

友元函式被允許完全訪問類的私有和受保護成員。

6 行內函數

使用行內函數,編譯器會嘗試在函式呼叫的位置擴充套件函式體中的程式碼。

7 this 指標

每個物件都有一個特殊的指標`this`,它指向物件本身。

8 指向 C++ 類的指標

指向類的指標與指向結構體的指標完全相同。實際上,類實際上只是一個包含函式的結構體。

9 類的靜態成員

類的成員變數和成員函式都可以宣告為靜態的。

廣告