*** Why using struct? -- 考慮寫一個 C/C++ 程式處理學生的成績資料, 例如輸入檔案如下 學號 NAME 身高 體重 S1 S2 S3 S4 S5 9817001 Chang-3-fong 175 70.5 85 78 92 66 83 9817003 Lee-4-dee 159 66 75 83 88 77 78 9817005 A Ban 163 56 83 87 93 83 84 9817007 D.H. Lee 182 85.4 82 75 90 76 78 9817011 Michael Chang 157 68.5 89 74 85 69 86 9817014 Hei Hei Hei 165 57.5 78 79 86 77 82 算出每個人五科平均分數, 輸出要包括平均以及名次 印兩次: 依照學號由小到大排印一次? 再依照分數高低排(即第一名先印)? 思考? 如何存放資料? 很多 array? 一個學生的資料散置在許多 array 中? 還是用 一個 array, 但是每一個元素是一個學生的所有資料 ? (better) ==> 用 struct Student { ... ... }; // 自訂資料結構 struct Student x[999]; *** Why using class ? 文法上: struct Hahaha {private: ... }; 相當於 class Hahaha 如右 class Hahaha { ... }; 意義上: 把 data 以及對該些data 會做事的動作或方法(即函數)封藏在 class 內部 ==> Abstract Data Type (ADT) 抽象資料型別 方法 method == 動作 action == function 函數(函式) 例如: Stack 堆疊 ==> 用一個 array, 和一個整數 就可以了 class Stack{ double dat_[99]; //寫 class開頭會自動 private: int sp; public: Stack( ) { sp = -1; } // constructor, 要到 Stack位置會自動執行這 void push(double x) { sp++; sp = sp % 99; // 直接寫 99 不好, 怎麼改? 搭配 enum dat_[sp] = x; } double top( ) { return dat_[sp]; } void pop( ) { --sp; } }; // 別忘了分號 * 這樣 Stack xo, brandy; // 用起來像用物件 --- 堆疊物件 * Inheritance -- class 的繼承就是擴充(extend), 就是請 compiler 幫忙 copy ==> 參考講義 mankind 和 Animal 兩個 classes