C++ 類 & 物件

C++ 類 & 物件

C++ 在 C 語言的基礎上增加了面向物件程式設計,C++ 支援面向物件程式設計。類是 C++ 的核心特性,通常被稱為使用者定義的型別。

類用於指定物件的形式,它包含了資料表示法和用於處理資料的方法。類中的資料和方法稱為類的成員。函式在一個類中被稱為類的成員。

C++ 類定義

定義一個類,本質上是定義一個數據型別的藍圖。這實際上並沒有定義任何資料,但它定義了類的名稱意味著什麼,也就是說,它定義了類的物件包括了什麼,以及可以在這個物件上執行哪些操作。

類定義是以關鍵字 class 開頭,後跟類的名稱。類的主體是包含在一對花括號中。類定義後必須跟著一個分號或一個宣告列表。例如,我們使用關鍵字 class 定義 Box 資料型別,如下所示:

class Box { public: double length; // 盒子的長度 double breadth; // 盒子的寬度 double height; // 盒子的高度 };

關鍵字 public 確定了類成員的訪問屬性。在類物件作用域內,公共成員在類的外部是可訪問的。您也可以指定類的成員為 privateprotected,這個我們稍後會進行講解。

定義 C++ 物件

類提供了物件的藍圖,所以基本上,物件是根據類來建立的。宣告類的物件,就像宣告基本型別的變數一樣。下面的語句聲明瞭類 Box 的兩個物件:

Box Box1; // 宣告 Box1,型別為 Box Box Box2; // 宣告 Box2,型別為 Box

物件 Box1 和 Box2 都有它們各自的資料成員。

訪問資料成員

類的物件的公共資料成員可以使用直接成員訪問運算子 . 來訪問。

為了更好地理解這些概念,讓我們嘗試一下下面的例項:

例項

#include <iostream> using namespace std; class Box { public: double length; // 長度 double breadth; // 寬度 double height; // 高度 // 成員函式宣告 double get(void); void set( double len, double bre, double hei ); }; // 成員函式定義 double Box::get(void) { return length * breadth * height; } void Box::set( double len, double bre, double hei) { length = len; breadth = bre; height = hei; } int main( ) { Box Box1; // 宣告 Box1,型別為 Box Box Box2; // 宣告 Box2,型別為 Box Box Box3; // 宣告 Box3,型別為 Box double volume = 0.0; // 用於儲存體積 // 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; // box 3 詳述 Box3.set(16.0, 8.0, 12.0); volume = Box3.get(); cout << "Box3 的體積:" << volume <<endl; return 0; }

當上面的程式碼被編譯和執行時,它會產生下列結果:

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

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

類 & 物件詳解

到目前為止,我們已經對 C++ 的類和物件有了基本的瞭解。下面的列表中還列出了其他一些 C++ 類和物件相關的概念,可以點選相應的連結進行學習。

概念描述
類成員函式類的成員函式是指那些把定義和原型寫在類定義內部的函式,就像類定義中的其他變數一樣。
類訪問修飾符類成員可以被定義為 public、private 或 protected。預設情況下是定義為 private。
建構函式 & 解構函式類的建構函式是一種特殊的函式,在建立一個新的物件時呼叫。類的解構函式也是一種特殊的函式,在刪除所建立的物件時呼叫。
C++ 拷貝建構函式拷貝建構函式,是一種特殊的建構函式,它在建立物件時,是使用同一類中之前建立的物件來初始化新建立的物件。
C++ 友元函式友元函式可以訪問類的 private 和 protected 成員。
C++ 行內函數通過行內函數,編譯器試圖在呼叫函式的地方擴充套件函式體中的程式碼。
C++ 中的 this 指標每個物件都有一個特殊的指標 this,它指向物件本身。
C++ 中指向類的指標指向類的指標方式如同指向結構的指標。實際上,類可以看成是一個帶有函式的結構。
C++ 類的靜態成員類的資料成員和函式成員都可以被宣告為靜態的。