C++ 速查手冊
13.1 - 存在期
變數有一定的存在期 (storage duration) ,宣告變數如同變數的誕生,而後在程式執行的某一個時間點結束,有三類存在期
- 自動
- 靜態
- 動態
使用以下的關鍵字 (keyword) 宣告
- auto
- register
- static
- extern
- thread_local
auto 在 C++11 之前用來宣告自動存在期的變數,由於沒有用 auto 宣告的變數都預設為自動存在期,因此到 C++11 已經改變 auto 的語意。
自動存在期的變數在作用域 (scope) 結束時,跟著變數也會自動終止,像是宣告在函數 (function) 裡的變數就是自動存在期的區域變數 (local variable) ,效力僅限在於函數主體的大括弧中。
register 用來要求編譯器將這個變數放入處理器的暫存器之中,也是屬於自動存在期,已不被建議使用。
宣告 static 的變數屬於靜態存在期,靜態存在期的變數特色是會一直存在,直到程式結束為止。
至於 extern 用於外部連結的變數, thread_local 則是 C++11 新增的關鍵字,用於執行緒 (thread) 的部分。