class A
{
public:
static const int ci;
};
//const int A::ci = 10;
int main()
{
cout << A::ci ;
return 0;
}
编译并无问题,运行会报错。,因为ci未定义,未分配内存,对象ci未建立成实体。
【注】对于不使用的对象(包括函数),可以只声明而不定义,当需使用的时候则需有定义,分配内存,成为实体
class A
{
public:
static const int ci;
};
const int A::ci = 10;
int main()
{
cout << A::ci ;
return 0;
}
这样一切ok
vc6不支持在类定义的体内指定初始值(不是定义,虽然形式上相似,指定初始值是不分配内存的,整个类定义也并不分配内存的,在创建类对象的时候,定义类对象的时候才分配内存),
c++的标准写法
class A
{
public:
static const int ci = 10;
};
const int A::ci 、/*= 10*/;
int main()
{
cout << A::ci ;
return 0;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/todototry/archive/2007/01/08/1476789.aspx