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

posted on 2009-07-31 09:35  Myhsg  阅读(402)  评论(0编辑  收藏  举报