1.避免重復(fù)定義和初始化 <<c++ primer>>說在類外定義和初始化是保證static成員變量只被定義一次的好方法。 但,為什么static const int就可以在類里面初始化呢? 想起C中一個函數(shù)里定義一個static變量是為了保證只初始化一次。 那么,是否可以這樣理解: static數(shù)據(jù)成員在類外定義和初始化是為了保證只被定義和初始化一次,這樣編譯器就不必考慮類的函數(shù)里面第一個對static變量的’=’操作是賦值還是初始化了。 static const int可以在類里面初始化,是因為它既然是const的,那程序就不會再去試圖初始化了。
而且,<<c++ primer>>說static const int也必須在類外定義,類里面的只是聲明和初始化(但是linux下用GCC試的結(jié)果是 :不用在類外定義也完全可以,gcc version 3.4.6)。
2.滿足C++的static語意 這里的語意,應(yīng)該就是1中說的意思了吧
只有const沒有static的話,類的每個object都有這個const變量,也不能在類的數(shù)據(jù)成員聲明的時候一起初始化了,只能在構(gòu)造函數(shù)的初始化列表里初始化。
//下面是網(wǎng)上看到的內(nèi)容: +++++++++++++++++++++++++ #include <iostream.h>
為什么static成員一定要在類外初始化? 功不成,身已退
|
|
來自: lifei_szdz > 《C 》