静态类和单例的区别
http://www.cnblogs.com/phoebus0501/archive/2011/03/12/1982408.html
1。使用的方便性:如果需要初始化工作,單例模式可以在構造函數里面完成,全靜態函數的類需要一個額外的函數來完成初始化工作,而且使用者如果沒有 調用這個initialize函數,那么后續的操作就會有問題,構造函數會被默認調用,所以使用起來比較簡單,對使用者做出了最少的假設。
2。初始化時機:單例模式初始化比較靈活,可以在需要的時候初始化,而全靜態函數必然導致成員全為靜態成員,靜態成員是在編譯時就初始化好了。如果 初始化成本比較昂貴,并且程序里面未必一定使用這個類,那這將是單例模式的一個很大優勢。順便說一下全局變量,全局變量的初始化順序是未指定的。
例如 全局變量int a; int b;編譯器是先初始化a還是先初始化b?我想大家只能靠猜,或者在某個編譯器上實驗一下給出答案,一旦要是有個新編譯器,結果又會是什么樣子呢?
3。最重要的區別:單例模式可以有多態,而全靜態的類不能支持多態。
其實C++中沒有靜態類
總結
- 上一篇: c++ static 关键字用法
- 下一篇: 有序的最小代价