類別是從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著, 博碩文化譯