#討論 C/C++ static keyword

最近剛好複習到static的一些基本用法,依稀記得某次專題寫了一堆static變數,在Demo的時候被老師罵慘,憶起往事又去google了一些相關資料,發現很多人覺得static非常邪惡(evil),一些明顯的缺點像是: A. 對C++來說,違反OO,無法封裝 B. 生命周期過長,和整個program相同(感覺有點像new完但沒有delete?) 我想問的問題是: 1. static還有什麼缺點或隱憂嗎? 2. static變數和全域變數的差別在哪?看到有人說static變數在哪都可以被改;又有人說把static變數放在函式裡就不會污染函式外的空間。這兩者沒有衝突嗎? 3. static關鍵字(變數、函式、成員函式)有哪些適合使用,不那麼邪惡的情況嗎?
愛心
1
10
全部留言
如果專指static"變數"的話 除了scope 只在檔案裡面以外 其他的部分都和global變數一樣 也就是說 如果我要access global變數我可以透過extern 但是static不行 --------------------- 再補充一下 C++11有introduce lvale和rvalue的特性 其實會破壞static scope 的特性 所以要不要用可能要和同事討論一下
B2(已編輯)
你指的缺點都不是理解的很正確...
留言……