C++ 編程的主要目的是將面向?qū)ο蟮乃枷胍M(jìn)到 C 編程語(yǔ)言中,類是 C++ 的核心特征,用來(lái)支持面向?qū)ο缶幊?,類通常被稱為用戶定義的類型。
類是用于指定一個(gè)對(duì)象的形式,它將數(shù)據(jù)表示和用于處理數(shù)據(jù)的方法組合成一個(gè)整潔的包。一個(gè)類的數(shù)據(jù)和函數(shù)統(tǒng)稱為類的成員。
當(dāng)你定義了一個(gè)類,你就定義一個(gè)數(shù)據(jù)類型的藍(lán)圖。這實(shí)際上沒(méi)有定義任何數(shù)據(jù),它只是定義了類名是什么意思,也就是意味著,一個(gè)類的對(duì)象包含什么,在這樣一個(gè)對(duì)象上可以執(zhí)行哪些操作。
定義一個(gè)類,以關(guān)鍵字 class 開(kāi)始,緊隨其后的是類名,和類的主體,類的主體由一對(duì)大括號(hào)封閉。一個(gè)類定義必須以分號(hào)或者一系類聲明結(jié)尾。例如,我們通過(guò)使用關(guān)鍵字 class 定義 Box 數(shù)據(jù)類型,如下所示:
class Box
{
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
關(guān)鍵字 public 決定了緊隨其后的類的成員的訪問(wèn)屬性。一個(gè)公共成員可以從類外處于任何一個(gè)類對(duì)象范圍內(nèi)的地方訪問(wèn)。類對(duì)象的范圍內(nèi)的任何地方。您還可以指定一個(gè)類的成員為 private 或 public,我們將在一個(gè)小節(jié)中討論它們。
一個(gè)類為對(duì)象提供了藍(lán)圖,對(duì)象是由類創(chuàng)建而來(lái)。我們聲明一個(gè)類的對(duì)象的方式,用聲明其他基本類型變量的方式完全相同。以下語(yǔ)句聲明 Box 類的兩個(gè)對(duì)象:
Box Box1; // Declare Box1 of type Box
Box Box2; // Declare Box2 of type Box
Box1 和 Box2 對(duì)象都分別持有其各自的數(shù)據(jù)副本。
類的對(duì)象的公共數(shù)據(jù)成員可以使用直接成員訪問(wèn)操作符:(.)
訪問(wèn)。試著執(zhí)行下面的例子,能更清晰的說(shuō)明這個(gè)問(wèn)題:
#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;
}
編譯和執(zhí)行上面的代碼,執(zhí)行結(jié)果如下:
Volume of Box1 : 210
Volume of Box2 : 1560
需要特別加以注意的是,不能使用直接成員訪問(wèn)操作符:(.)
直接訪問(wèn)私有成員和保護(hù)成員。我們將在以后學(xué)習(xí)如何訪問(wèn)私有成員和保護(hù)成員。
到目前為止,我們已經(jīng)對(duì) C++ 類和對(duì)象有了最基本的了解。還還有更多的與 C++ 類和對(duì)象相關(guān)的有趣的概念,我們將在下面列出的各個(gè)小節(jié)中討論它們:
內(nèi)容 | 描述 |
---|---|
類成員函數(shù) | 類的成員函數(shù)是一個(gè)函數(shù),像其他變量一樣,成員函數(shù)在類中有其定義和原型。 |
類的訪問(wèn)修飾符 | 一個(gè)類成員可以被定義為公共,私有或保護(hù)。默認(rèn)情況下成員將被假定為私有。 |
構(gòu)造函數(shù)和析構(gòu)函數(shù) | 一個(gè)類的構(gòu)造函數(shù)是一種特殊的函數(shù),在創(chuàng)建一個(gè)類的新對(duì)象時(shí)調(diào)用它。析構(gòu)函數(shù)也是一個(gè)特殊的函數(shù),當(dāng)創(chuàng)建對(duì)象被刪除時(shí)調(diào)用它。 |
C++ 拷貝構(gòu)造函數(shù) | 拷貝構(gòu)造函數(shù)是一個(gè)構(gòu)造函數(shù),它創(chuàng)建一個(gè)對(duì)象并用之前已經(jīng)創(chuàng)建好的一個(gè)同類的對(duì)象對(duì)其進(jìn)行初始化。 |
C++ 友函數(shù) | 一個(gè)友(friend)函數(shù)允許完全訪問(wèn)類的私有成員和保護(hù)成員。 |
C++ 內(nèi)聯(lián)函數(shù) | 使用一個(gè)內(nèi)聯(lián)函數(shù),編譯器試圖用函數(shù)體中的代碼替換調(diào)用函數(shù)的地方的函數(shù)名,從而達(dá)到消除函數(shù)調(diào)用時(shí)的時(shí)間開(kāi)銷的目的。 |
C++ 中的 this 指針 | 每個(gè)對(duì)象都有一個(gè)特殊的指針 this,它指向?qū)ο蟊旧怼?/td> |
指向 C++ 類的指針 | 類指針和一個(gè)指向結(jié)構(gòu)的指針是以完全相同的方式實(shí)現(xiàn)的。事實(shí)上一個(gè)類就是一個(gè)在其中包含了函數(shù)的結(jié)構(gòu)體。 |
類的靜態(tài)成員 | 類的數(shù)據(jù)成員和函數(shù)成員都可以被聲明為靜態(tài)的。 |