静态成员变量的初始化问题.
我从一篇文章里看到下面两段话:
静态数据成员要在程序一开始运行时就必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数内分配空间和初始化。
这样,它的空间分配有三个可能的地方,一是作为类的外部接口的头文件,那里有类声明;二是类定义的内部实现,那里有类的成员函数定义;三是应用程序的main()函数前的全局数据声明和定义处。
对于它初始化的地方在第一个和第二个有些看不懂,大虾们能给些实例说明吗?谢谢.
[解决办法]
.h文件中,类定义如下
class test
{
static int x;
};
在.cpp文件中
int test::x=0;这样初始化.
========================
因为这种写法标准,其他的写法在某些编译器上不能通过
[解决办法]
to jinwei1984() :
好象不能对类的const成员赋值, 类的不同对象的const成员值可以不一样
非要在类中定义常量用enum
最新的标准是可以在类内对 const成员进行赋值的,就如我写的:
class A
{
static const int x=5; //可以赋值
};
const int A::x; //但依然要义务定义
VC6之样的编译器是不能通过的,要用标准一些的编译器,DEV C++就能通过
enum当然也可以.