看板 NTUE-CS100 關於我們 聯絡資訊
最後只剩下一個問題 3. 這個stack可以由使用者決定大小 我們前面寫的stack都是固定size,因為array長度是固定的。 所以要執行時才決定array size,就要用動態分配記憶體。 class myStack{ private: int* data; //把data欄位改成pointer int size //同時用size來紀錄array大小 int top; public: int pop(); void push(int e); myStack(); }; //這個跟class同名的函數叫Constructor(建構者? 中文怪怪的) //顧名思義,當一個class誕生,系統就會自動呼叫這個函式 myStack::myStack(){ //Constructor通常用來初始化class裡的變數 top=-1; cout << "請輸入您希望的stack的大小:"; cin >> size; data = new int[size]; //動態分配 } 改成動態分配array大小後, 前面幾篇的push,pop的陣列邊界檢查,也要記得從99改成size喔 到此為止,myStack的模子應該是完成了。 ==================================== int main(){ myStack gogo; // 實際生產出一個myStack,名字叫gogo。 gogo.push(1); //自己跑跑看吧 gogo.push(99); cout << gogo.pop() << endl; ... } ===================================== 把程式碼包成class有相當多好處。 從使用者的觀點來看, 只需要知道gogo.push()跟gogo.pop(),其他一概不知,也可以使用愉快。 (例如我自己寫的code,常常寫完幾個月後內容都忘光了,依舊可以拿出來再利用=.=+) 從程式設計師的觀點來看, class的可移植性很高,不管貼到哪都能跑。 而且寫大型軟體時,一次只需專注在一個問題上,最後再合併多個class的功能即可。 到此為止,應該有感受到一點點物件導向的好處了吧? 對了,寫完後記得把這份stack保留下來,以後(~大四)可能有很多機會用到:) -- 懷著一顆對這個家有無限關愛的心,我 再度流浪到遠方。 --<舒伯特> 這些年來,我唱著歌,唱出愛,可是它對我來說卻是痛苦; 我唱出痛苦,可是它對我來說又是愛。 愛與痛苦就這樣分割著我。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.68.15.109
moonlights: 好文必推好文必m!!! 建中哥是我們的守護神XD 03/25 18:47
gingkoginkgo: 好文必推好文必m!!! 建中哥是我們的守護神XD 03/25 20:42
daimiku: 好文必推好文必m!!! 建中哥是我們的守護神XD 03/25 20:48
tommyccc2007: 好文必推好文必m!!! 建中哥是我們的守護神XD 03/25 22:16
bearNturtle:好文+1 03/25 22:54
※ 編輯: chchwy 來自: 203.68.15.230 (03/26 08:19)