類別是從C語言的結構體擴充而來的,原本的結構體是可以存放許多變數,
類別不但可以加入變數,還可以加入函數在裡頭。
雞蛋盒類別的程式碼:
class 雞蛋盒子
{
public:
void 放入(int 放入雞蛋); //這些是函數
void 取出(int 取出雞蛋); //這些是函數
void 盒子空的(); //這些是函數
int 回報數量(){ //這些是函數
return 總數量;
}
private:
int 總數量; //這是變數
};
類別中函數的定義,跟一般函數沒捨麼差別,只要在前面補上函數的類別名稱即可:void 雞蛋盒子::放入(int 放入雞蛋)
{
總數量 = 總數量 + 放入雞蛋 ;
}
類別中的函數可以互相呼叫:void 雞蛋盒子::盒子空的()
{
總數量 = 0 ;
}
void 雞蛋盒子::取出(int 取出雞蛋)
{
總數量 = 總數量 - 取出雞蛋 ;
if (總數量 < 0) {
盒子空的() ; //呼叫「盒子空的」這個類別中的其他函數
}
}
物件(Object):
物件就是個東西!是什麼東西?是依照類別創造的東西。換句話說,類別是物件的設計圖
我們根據雞蛋盒子的設計圖,設計了兩個雞蛋盒子的物件,分別是12顆裝與6顆裝
雞蛋盒子 一打裝的雞蛋盒子; //12顆裝的雞蛋盒子 雞蛋盒子 半打裝的雞蛋盒子; // 6顆裝的雞蛋盒子既然物件是依照類別這張設計圖所創造出來的,那麼我們也可以呼叫他的函數來用
雞蛋盒子 一打裝的雞蛋盒子; 一打裝的雞蛋盒子.盒子空的(); //設定盒子裡面一開始是空的 一打裝的雞蛋盒子.放入(10); //把10顆雞蛋放入雞蛋盒子裡頭建構子(Constructor):在產生物件時就可以自動呼叫某些函數或變數。
class 雞蛋盒子
{
public:
雞蛋盒子(); //補上一個叫做雞蛋盒子的函數
.....
}
void 雞蛋盒子::雞蛋盒子() //補上這段函數,解釋呼叫雞蛋盒子時要做的事情
{
總數量 = 0 ;
}
雞蛋盒子 一打裝的雞蛋盒子; //這時,雞蛋盒子()這函數就會立刻啟動
多載(Overload):引數的型別或數值可以把不是相同名稱的函數做複數定義。宣告時:
double GetCircleArea(int r, double pi) //第一個引數是int
{
return r * r * pi ;
}
double GetCircleArea(dobule r, double pi) //第一個引數是double
{
return r * r * pi ;
}
double GetCircleArea(int r) //沒有第二個引數
{
return r * r * 3.14 ;
}
呼叫時:會根據用的不同變數,使用不同的宣告函數int Main()
{
int r1=10;
double area, r2 = 10.1;
area = GetCircleArea(r1, 3.14); //因為r1是int走第一個宣告
area = GetCircleArea(r2, 3.14); //因為r2是double走第二個宣告
area = GetCircleArea(r2); //因為只有宣告一個引數走第三個宣告
}
參考書目:
1. 新C++ 學習繪本, ANK Co., Ltd著, 博碩文化譯
