⌛寫於20070108
C++的世界中,有個習俗:一夫多妻制。
局部變數的生命期是由所屬函式被呼叫開始,至函式結束執行而消失。
局部變數從出生開始就被父母指腹為婚給了函式。17Please respect copyright.PENANAhIe63OHWUQ
他們或許同時出生,也或許局部變數慢點。17Please respect copyright.PENANAP11qAGS66b
這個世界相信,局部變數是為了函式而生的。
然而,函式卻同時擁有很多很多局部變數,甚至可以找全域變數偷情。
這是個傳統。17Please respect copyright.PENANAvCx2OwIRBR
局部變數從未想過要改變,他們專注於付出,即使到了最後一刻……
17Please respect copyright.PENANAyOsEMzaI0V
自程式開始就存在,但其視野則是自定義開始,一直到程式最後,所以定義在程式開頭的全域變數,程式中所有的函式都能存取之。17Please respect copyright.PENANAl6DuQYPzAM
全域變數的生命期是自程式開始一直到程式結束。
全域變數出生在程式之後,程式愛上他了。17Please respect copyright.PENANAaJS5nJXbEM
可即便全域變數可以為了任何需要他的人出現,毋須任何理由。17Please respect copyright.PENANA8VXABrFIrb
但他從不願屬於誰。17Please respect copyright.PENANAZkStE3wDP0
他想要自由,也害怕程式佔有的愛。17Please respect copyright.PENANAAmyYOoaJmH
他遊戲人間,偶爾應函式的邀約,四處玩樂。
然而,在這個世界,一切都屬於程式。17Please respect copyright.PENANA4bluhAv3Bi
程式雖無法控制全域變數的生活,卻能控制他的生死。17Please respect copyright.PENANAea8ATbypUW
全域變數從未忘記過,程式有次對著陪他玩過的函式說:我要你死。
17Please respect copyright.PENANAZwWF2kMhhQ
要讓局部變數的生命期變長,使變數的值到下一次函式呼叫時仍能保存下來,可加上關鍵字「static」,讓變數成為靜態局部變數。
即便函式總是拈花惹草,但有些函式也有最喜愛的局部變數。
根據C++的傳統,每個局部變數在函式死亡的同時就必須殉情。17Please respect copyright.PENANA5OeABSkxet
唯有一種例外:靜態局部變數。
但這卻是局部變數們最不想要面對的命運。
C++的世界,沒有絕對的死亡。17Please respect copyright.PENANAEgsF8NZjHe
程式除了自己的生死無法決定之外,隸屬於他的全部人,不論生死皆由他掌控。17Please respect copyright.PENANATADwh8Nwkl
函式也是,他可以決定自己死後,讓某些局部變數成為靜態,繼續存活。
但成為靜態局部變數,意味著他在函式死後,再沒有任何生活與變動的可能,只是存在。17Please respect copyright.PENANAmkyz1vPRJr
若有幸,函式某天再次被程式想起而復活,靜態局部變數會恢復為局部變數。17Please respect copyright.PENANAJrgLPvB4KR
但這又是另一種折磨。
復活的函式並沒有過去的記憶。17Please respect copyright.PENANAnGmHLWx10g
一切像重新經歷般,理所當然地擁有了他,給予他一樣的喜怒哀樂,說出相同的話。17Please respect copyright.PENANAoCdO3KbtIa
曾經是靜態局部變數的他,擁有全部的記憶,卻無法傷害現在的函式,於是也像演戲一般,回復相同的話。17Please respect copyright.PENANAwGBWazED8X
然後等待他,因著相同的個性,走向相同的命運,並面臨相同的死亡。
他很清楚,函式對他會同樣的鍾愛,讓他繼續帶著不願意,再次成為靜態局部變數。17Please respect copyright.PENANALltjNmN3XL
如同物品般活著,在C++的世界中,靜靜地隨著函式的生死,如花一般地開落著……
為了確認自己當時在寫什麼,我竟然去複習了C++。
ns216.73.216.67da2


