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
要注意的是私有(private)和受保護(protected)成員不能直接使用直接成員訪問運算符(.)訪問。We will learn how private and protected members can be accessed.
類&對象的詳細信息:
到目前為止,已經得到了關於C++類和對象基本的理念。有相關C++類和對象進一步有趣的概念,我們將在下麵列出各個子部分將討論:
概念 | 描述 |
---|---|
類成員函數 | 類的成員函數是一個函數,它定義或像任何其他變量的類定義的原型 |
類訪問修飾符 | 類成員可以被定義為公共(public),私人(private)或保護(protected)。默認情況下,成員將被假定為私有(private) |
構造函數和析構函數 | 類構造函數是在創建類的新對象時調用類的特殊函數。 析構函數也是一種特殊的函數,當創建的對象被刪除時調用 |
C++拷貝構造函數 | 拷貝構造函數相同於類的構造函數,它先前已創建的對象初始化它創建一個對象的構造函數 |
C++友元函數 | 友元函數允許完全訪問類的private和protected成員 |
C++內聯函數 | 有了內聯函數,編譯器試圖擴大在函數體中的代碼的地方調用函數功能 |
C++ this指針 | 每個對象具有特殊的指針,它指向對象本身 |
C++指向類 | 一個指向類恰以同樣的方式指向一個結構。其實類實際上隻是一個函數結構 |
類的靜態成員 | 類兩個數據成員和成員函數可以聲明為靜態的 |