靜態成員的初始化:
與全局對象一樣對於靜態數據成員在程序中也只能提供一個定義,這意味着靜態數據成員的初始化不應該被放在頭文件中而應該放在含有類的非inline函數定義的文件中。
轉自:http://blog.csdn.net/veryday_code/article/details/7921833
能在類中初始化的成員只有一種,那就是靜態常量成員。
class A { private: static const int count = 0; // 靜態常量成員可以在類內初始化 };
結論:
- 靜態常量數據成員可以在類內初始化(即類內聲明的同時初始化),也可以在類外,即類的實現文件中初始化,不能在構造函數中初始化,也不能在構造函數的初始化列表中初始化;
- 靜態非常量數據成員只能在類外,即類的實現文件中初始化,也不能在構造函數中初始化,不能在構造函數的初始化列表中初始化;
- 非靜態的常量數據成員不能在類內初始化,也不能在構造函數中初始化,而只能且必須在構造函數的初始化列表中初始化;
- 非靜態的非常量數據成員不能在類內初始化,可以在構造函數中初始化,也可以在構造函數的初始化列表中初始化;