shark0r
7 years ago
【程式】C/C++的static保留字 - 巴哈姆特另一篇程式心得,從底層知識看static的用法。
C/C++的static都同時肩負數任XD 最主要它的功能其實就兩種,一種是把linkage變成internal(其他編譯單元看不到),一種是把storage duration變成static(與整個program的生命週期差不多)。
對於class member而言,加上static只有storage duration發生改變。
對於global的函數或是變數,加上staitc就同時改變storage duration與linkage。
對於local的變數,加上static就是改變storage duration,並且其初始化僅在第一次執行時發生。
然後值得一提的是,在C++裡面,用static當作internal linkage不知道為何不是很被推薦,取而代之的是anonymous namespace。
另外,global的static variable的初始化順序是未經定義的,所以有的人要實作singleton,又怕彼此在初始化時需要用到彼此,也都會用static local variable的方式實作。
立即下載