Re: [課業] 程設作業

看板NTUE-CS100作者 (mat)時間17年前 (2008/03/25 02:20), 編輯推噓5(500)
留言5則, 5人參與, 最新討論串6/14 (看更多)
最後只剩下一個問題 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

03/25 18:47, , 1F
好文必推好文必m!!! 建中哥是我們的守護神XD
03/25 18:47, 1F

03/25 20:42, , 2F
好文必推好文必m!!! 建中哥是我們的守護神XD
03/25 20:42, 2F

03/25 20:48, , 3F
好文必推好文必m!!! 建中哥是我們的守護神XD
03/25 20:48, 3F

03/25 22:16, , 4F
好文必推好文必m!!! 建中哥是我們的守護神XD
03/25 22:16, 4F

03/25 22:54, , 5F
好文+1
03/25 22:54, 5F
※ 編輯: chchwy 來自: 203.68.15.230 (03/26 08:19)
文章代碼(AID): #17v_3t3i (NTUE-CS100)
討論串 (同標題文章)
文章代碼(AID): #17v_3t3i (NTUE-CS100)