作者sunhextfn (阿毛)
看板C_and_CPP
標題[分享] Coding & Life
時間Wed Feb 18 20:48:48 2015
先前在回家的路上跟你一起瞎掰...
已經想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