extern
例:xx.h
extern int a;
xx.cpp
int a = 100;
即:
當別的cpp檔,include xx.h時,即告知linker a不在此.h與.cpp內,要去其他.o檔找。而build xx.h與xx.cpp時,會告知此a變數,可以給其他.o找到
Function或variable非class member
static function();(此變數宣告不在function裡)
static variable;(此變數宣告不在function裡)
A static function is a function whose scope is limited to the current source file.
即:
此function只會在自己對應的.h與.cpp內被看到,當.h與.cpp被build成.o檔時,其他程式如果
需要link此function會看不到。同理,此變數只在此.h與.cpp內看的到。
static variable;(此變數宣告在function裡)
即:call完此function後,此variable依然存在,不會消失。
Function或variable是class member
class xxx{static int a;
static void function();
}
即:
此variable不屬於任何instance,而是屬於此class的,所有instance共用此變數,可用此變數來計算instance個數。
此function不屬於任何instance,而是屬於此class的,未有instance即可呼叫此function。
參考:
[C/C++] 靜態函式 (static function) 2011
C/C++ 中的 static, extern 的變數
沒有留言:
張貼留言