要理解static
int a;
string s; 其實就是
auto int a;
auto string s; 而static變量的聲明是
static string s; 這樣似乎可以更有利於理解auto和static是一對成對的關鍵字吧
對於static的不理解
void func()
{
int a;
static int b;
}
每一次調用該函數
class A
{
private:
static int s_;
}; 在cpp中必須對它進行初始化
int A::s_ =
類的靜態成員是該類所有實例的共用成員
類的靜態成員必須初始化
class A
{
private:
static void func(int );
}; 實現的時候也不需要static的修飾
類的靜態函數是在該類的范疇內的全局函數
靜態成員函數可以繼承和覆蓋
在cpp文件的全局范圍內聲明
static int g_ =
這個變量的含義是在該cpp內有效
如果不使用static聲明全局變量
int g_ =
那麼將無法保證這個變量不被別的cpp共享
如果在一個頭文件中聲明
static int g_vaule =
那麼會為每個包含該頭文件的cpp都創建一個全局變量
這裡順便說一下如何聲明所有cpp可共享的全局變量
extern int g_; // 注意
然後在其中任何一個包含該頭文件的cpp中初始化(一次)就好
int g_ =
然後所有包含該頭文件的cpp文件都可以用g_這個名字訪問相同的一個變量
在cpp內聲明
static void func();
函數的實現不需要static修飾
From:http://tw.wingwit.com/Article/program/net/201311/13632.html