1.避免重复定义和初始化 <<c++ primer>>说在类外定义和初始化是保证static成员变量只被定义一次的好方法。 但,为什么static const int就可以在类里面初始化呢? 想起C中一个函数里定义一个static变量是为了保证只初始化一次。 那么,是否可以这样理解: static数据成员在类外定义和初始化是为了保证只被定义和初始化一次,这样编译器就不必考虑类的函数里面第一个对static变量的’=’操作是赋值还是初始化了。 static const int可以在类里面初始化,是因为它既然是const的,那程序就不会再去试图初始化了。
而且,<<c++ primer>>说static const int也必须在类外定义,类里面的只是声明和初始化(但是linux下用GCC试的结果是 :不用在类外定义也完全可以,gcc version 3.4.6)。
2.满足C++的static语意 这里的语意,应该就是1中说的意思了吧
只有const没有static的话,类的每个object都有这个const变量,也不能在类的数据成员声明的时候一起初始化了,只能在构造函数的初始化列表里初始化。
//下面是网上看到的内容: +++++++++++++++++++++++++ #include <iostream.h>
为什么static成员一定要在类外初始化? 功不成,身已退
|
|
来自: lifei_szdz > 《C 》