c++ 在 c 語言的基礎上增加了物件導向程式設計,c++ 支援物件導向程式設計。類是 c++ 的核心特性,通常被稱為使用者定義的型別。
類用於指定物件的形式,它包含了資料表示法和用於處理資料的方法。類中的資料和方法稱為類的成員。函式在乙個類被稱為類的成員。
定義乙個類,本質上是定義乙個資料型別的藍圖。這實際上並沒有定義任何資料,但它定義了類的名稱意味著什麼,也就是說,它定義了類的物件包括了什麼,以及可以在這個物件上執行哪些操作。
類定義是以關鍵字class開頭,後跟類的名稱。類的主體是包含在一對花括號中。類定義後必須跟著乙個分號或乙個宣告列表。例如,我們使用關鍵字class定義 box 資料型別,如下所示:
class box
;
關鍵字public確定了類成員的訪問屬性。在類物件作用域內,公共成員在類的外部是可訪問的。您也可以指定類的成員為private或protected,這個我們稍後會進行講解。
類提供了物件的藍圖,所以基本上,物件是根據類來建立的。宣告類的物件,就像宣告基本型別的變數一樣。下面的語句宣告了類 box 的兩個物件:
box box1; // 宣告 box1,型別為 box
box box2; // 宣告 box2,型別為 box
物件 box1 和 box2 都有它們各自的資料成員。
類的物件的公共資料成員可以使用直接成員訪問運算子 (.) 來訪問。為了更好地理解這些概念,讓我們嘗試一下下面的例項:
#include
using namespace std;
class box
;int main( ){
box box1; // 宣告 box1,型別為 box
box box2; // 宣告 box2,型別為 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 <
當上面的**被編譯和執行時,它會產生下列結果:
box1 的體積:210
box2 的體積:1560
需要注意的是,私有的成員和受保護的成員不能使用直接成員訪問運算子 (.) 來直接訪問。我們將在後續的教程中學習如何訪問私有成員和受保護的成員。
概念描述
類成員函式
類的成員函式是指那些把定義和原型寫在類定義內部的函式,就像類定義中的其他變數一樣。
類訪問修飾符
類成員可以被定義為 public、private 或 protected。預設情況下是定義為 private。
建構函式 & 析構函式
類的建構函式是一種特殊的函式,在建立乙個新的物件時呼叫。類的析構函式也是一種特殊的函式,在刪除所建立的物件時呼叫。
c++ 拷貝建構函式
拷貝建構函式,是一種特殊的建構函式,它在建立物件時,是使用同一類中之前建立的物件來初始化新建立的物件。
c++ 友元函式
友元函式可以訪問類的 private 和 protected 成員。
c++ 內聯函式
通過內聯函式,編譯器試圖在呼叫函式的地方擴充套件函式體中的**。
c++ 中的 this 指標
每個物件都有乙個特殊的指標this,它指向物件本身。
c++ 中指向類的指標
指向類的指標方式如同指向結構的指標。實際上,類可以看成是乙個帶有函式的結構。
c++ 類的靜態成員
類的資料成員和函式成員都可以被宣告為靜態的。
把類成員改成指標 C 帶有指標成員的類處理方式
在乙個類中,如果類沒有指標成員,一切方便,因為預設合成的析構函式會自動處理所有的記憶體。但是如果乙個類帶了指標成員,那麼需要我們自己來寫乙個析構函式來管理記憶體。在 中寫到,如果乙個類需要我們自己寫析構函式,那麼這個類,也會需要我們自己寫拷貝建構函式和拷貝賦值函式。析構函式 我們這裡定義乙個類has...
C 類成員指標
類成員指標 1.成員指標式可以指向類的非靜態成員的指標。類的靜態成員不屬於任何物件,因此無需特殊的指向靜態成員的指標。指向靜態成員的指標的普通指標沒有任何區別。2.當初始化乙個類成員指標時,我們令其指向類的成員,但不指定代成員所屬的物件,直到使用到成員指標時,才提供所屬的物件。3.資料成員指標 例 ...
C 類成員指標
首先讓我們看一下,乙個簡單的成員變數指標 和 成員函式指標的使用例子。struct a int a pi a i void a pfoo a foo a a a.pi 1 等同於 a.i 1 a.pfoo 等價於 a.foo 在vc 下,輸出 a i 和 a foo 的值,你會發現他們的值都為1 在...