首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

静态成员变量的初始化有关问题

2012-03-16 
静态成员变量的初始化问题.我从一篇文章里看到下面两段话:静态数据成员要在程序一开始运行时就必须存在。因

静态成员变量的初始化问题.
我从一篇文章里看到下面两段话:

        静态数据成员要在程序一开始运行时就必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数内分配空间和初始化。
        这样,它的空间分配有三个可能的地方,一是作为类的外部接口的头文件,那里有类声明;二是类定义的内部实现,那里有类的成员函数定义;三是应用程序的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当然也可以.

热点排行