close

面試工作時常常被問到這樣子的問題

static變數/函式在C/C++的意義
 
先從C說起
倘若static出現在global function/variable的前頭
代表著是這個function/variable的scope只限於當下定義的檔案中
也就是說雖然是global function/variable
在compile的過程中別的檔案裡的code即使用extern的方式宣告想要使用它
也是不行的
 
另外比較常見的function內宣告的static variable
function內的static variable較local variable有永久存在的特性
一般而言local variable存在於stack中
隨著function call而起 隨著return而終
但是static variable則是存於data segment的BSS中 (Data Segment@wiki)
擁有完整的程式執行生命周期
 
 
再來就是C++的部份
如果跟class無關的static 就跟C一樣的
但是如果是出現在class中 就比較特別了
static member variable蠻像C裡頭function內的static variable
是該class的每個objects可以共享的資訊
static member function則是可以用來修改static member variable的function
在static member function裡不可以用this來access object-dependent information.
 
大概就是這樣.
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 丘猴子 的頭像
    丘猴子

    轉貼部落格

    丘猴子 發表在 痞客邦 留言(0) 人氣()