類是D編程的核心功能,它支持面向?qū)ο蟮木幊毯屯ǔ1环Q為用戶定義的類型。
類是用來指定對象的形式,它結(jié)合了數(shù)據(jù)表示和操縱數(shù)據(jù)成一個整齊的包裝方法。類中的數(shù)據(jù)和函數(shù)被稱為類的成員。
當定義一個類時,定義了一個數(shù)據(jù)類型。這實際上并不定義任何數(shù)據(jù),但它并定義哪些類名表示,即是什么類的對象將包括與哪些操作可以在這樣一個對象來執(zhí)行。
類定義以關(guān)鍵字class后面的類名開頭和類體,由一對花括號括起來。類定義必須要么跟一個分號或聲明的列表。例如,我們定義使用關(guān)鍵字class如下框數(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確定類跟在它后面的成員的訪問屬性。公共成員都可以從類的外部訪問類對象的范圍內(nèi)的任何地方。也可以指定一個類的成員為private或protected,我們將在一個分節(jié)討論。
一類提供對象框架,所以基本上是一個對象從一個類創(chuàng)建的。我們聲明一個類的對象與排序完全相同的聲明我們聲明基本類型的變量。下面的語句聲明類Box的兩個對象:
Box Box1; // Declare Box1 of type Box Box Box2; // Declare Box2 of type Box
兩個對象Box1和Box2都會有自己的數(shù)據(jù)成員的副本。
一個類的對象的公共數(shù)據(jù)成員可以使用直接成員訪問運算符進行訪問(.)讓我們試試下面的例子中,直觀清楚:
import std.stdio; class Box { public: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box } void main() { Box box1 = new Box(); // Declare Box1 of type Box Box box2 = new Box(); // 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; writeln("Volume of Box1 : ",volume); // volume of box 2 volume = box2.height * box2.length * box2.breadth; writeln("Volume of Box2 : ", volume); }
當上面的代碼被編譯并執(zhí)行,它會產(chǎn)生以下結(jié)果:
Volume of Box1 : 210 Volume of Box2 : 1560
要注意的是私有和受保護成員不能直接使用直接成員訪問運算符(.)進行訪問是重要的。我們將學(xué)習(xí)private和protected成員如何可以訪問。
到目前為止,已經(jīng)得到了類和對象非?;镜母拍睢S邢嚓P(guān)的為D編程中類和對象,我們將在下面列出各個子部分進一步討論相關(guān)的概念:
Concept | 描述 |
---|---|
類成員函數(shù) | 一個類的成員函數(shù)是一個函數(shù),它有它的定義或像任何其他變量在類定義中它的原型。 |
類的訪問修飾符 | 類成員可以被定義為public,private或protected。默認情況下,成員將被假定為private。 |
構(gòu)造函數(shù)和析構(gòu)函數(shù) | 類的構(gòu)造函數(shù)是在創(chuàng)建類的新對象時調(diào)用類中的特殊功能。析構(gòu)函數(shù)也是一個特殊的功能,當創(chuàng)建的對象被刪除時調(diào)用。 |
this指針 | 每個對象都有一個特殊的指針this,它指向的對象本身。 |
指針指向類 | 一個指針,指向類完成完全相同的方式指向一個結(jié)構(gòu)。其實一個類實際上只是一個帶有功能結(jié)構(gòu)。 |
類的靜態(tài)成員 | 這兩個數(shù)據(jù)成員和類的成員函數(shù)可以被聲明為靜態(tài)。 |