精華區beta C_and_CPP 關於我們 聯絡資訊
先前在回家的路上跟你一起瞎掰... 已經想po很久了,最近才知道有c_and_cpp版,或許po在這比較合適...? 應該沒有違規吧~就把本文當作複習C++語法吧XD 老師上課講到...假如人生是程式,那麼... 假如每個人的人生都是一個故事,programmer是這故事的全知者。 假如故事是用C/C++語言寫下,g++是故事的編輯者,檢查有沒有語法錯誤,幫它列印,裝 釘成書,於是得到屬於每個人的執行檔... #include 是引用其他人的故事,或者說是故事的前傳。 main function是故事的主線 故事中,global variable是故事的主角,local variable是主角在各個階段遇到的配角, 配角在主角脫離他的scope後就歸還給記憶體, static variable是超越scope的配角, 主角可以在任何scope用operator:: 進入class和他聯絡。 operator是人們之間溝通的方式。 function是主角會遇到的支線任務,這些任務可能需要和別人一起完成。 pass by value,是間接地,複製那人的經驗,學習那人的能力,才能勝任這個任務。 pass by reference,是那個人直接和你一起完成任務。 array是一堆對主角有類似影響的人群。 pointer是人們之間的對話紀錄,pointer標記這些對談在主角memory內的位置, 可以將pointer cast成不同的形態去回憶這個memory,但如果memory錯亂,會 segmentation fault,人會崩潰。 就像C++是物件導向,這些故事也是以人為本。//跟司馬遷寫史記一樣 class可以是個人,也可以是群體。 每個人都是一個object,object有它所屬的class,class之間可能有inheritance關係 多個小class也可以集合成一個大class,這就是一個群體。 class的data member就是這個群體的成員, member function是這個群體會做的事情。 public區域是外界可以觀察到這個群體的範圍, protected區域是這個群體繼承給他的下一代時的資源, private區域是這個群體之內的小秘密。 virtual function是base class(爸媽)教小孩(derived class)的一些基礎技能,但小孩 做起來的樣子可能跟爸媽不一樣。 polymorphism(用base class pointer指向derived class memory),就像爸媽讓小孩自由 發展。 ----------- 之前老師用local variable來描述人生就有點感傷,離開scope就掰了。 嚴格來說每個人都是local variable,只有自己是global,差別只在scope範圍。 你說我是static,雖然我覺得沒那麼嚴謹(後來發現的確是,妳只記得static不會被 砍而已XD), 但讓我開始想static的意義... 是超越scope的variable,可以在需要時用operator::聯絡。 一想到只是說說而已還是滿感傷的,因為static是programmer定義的,不是variable自己 說的算,唯有我們在不同scope時才能確認這件事。想想應該不太可能... 但這就是人生,嘆~ 今天是年夜,僅此,紀念我們曾經一起奮鬥的每一晚 scope將結束,希望新的一年,你能過得更好,每天都有收穫! 過了一年,電資魯宅,還是魯宅阿~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.143.154.199 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1424263731.A.F26.html
dritchie: 一個好的故事應該要沒有global variable的說 02/18 22:41
tjjh89017: 可是global variable還是很重要啊,寫系統不可能沒有他 02/18 23:26
APE36: 推,可以寫得更寫實一點 再寫實就被發現拉~ 02/18 23:46
a27417332: 推,寫得很棒 02/19 00:58
pizzafan: 已按大F,我想找更多人一起幫忙寫,台版2D的StarCraft啦~ 有點猛0.0 02/19 09:20
ahwater01: 很好奇樓上要做甚麼XD 02/19 11:34
yushiung: 推推 02/19 21:06
yushiung: 發現自己看得懂有些感動 恭喜 C++博大精深呀~似乎還有其他可以寫的吧? 02/19 21:09 ※ 編輯: sunhextfn (223.143.255.61), 02/19/2015 23:10:30 ※ 編輯: sunhextfn (223.143.255.61), 02/19/2015 23:17:16
tinlans: 程式設計不要停留在語法層級太久,不然容易走火入魔, 02/20 03:30
tinlans: 然後又沒有培養到開發或維護大型軟體系統的能力。 02/20 03:31
NilPtr: Memory leak、Dangling pointer、Implicit type cast 02/21 02:44
NilPtr: God object、Hiding inherited names,嗯...有很多可以寫 02/21 02:46
pizzafan: 我只是[亂入]一下 02/21 09:57