常整型静态数据成员可以在类中直接初始化,而常实型静态数据成员不可以
class circle
{
int a; // 普通变量,不能在类中初始化
static int b; // 静态变量,不能在类中初始化
static const int c=2; // 静态常量,可以在类中初始化
static const double PI=3.1416;//error C2864: 只有静态常量整型数据成员才可以在类中初始化
} ;
//b可以在类外进行初始化,且所有对象共享一个b的值:
int circle::b = 2;
另一篇博客:
下面这段代码是正确的:
#include<iostream>
using namespace std;
//可以在类的声明中对静态常量整型的数据成员进行初始化
class myclass
{
public:
static const int i=20;
};
int main()
{
cout<<myclass::i<<endl;
return 0;
}
下面这段代码是错误的: 因为const成员只能初始化一次
#include<iostream>
using namespace std;
//可以在类的声明中对常量的类变量进行赋值
class myclass
{
public:
static const int i=20;
};
const int myclass::i = 10;
int main()
{
cout<<myclass::i<<endl;
return 0;
}
下面这段代码也是错误的:因为“只有静态常量整型数据成员才可以在类中初始化”
#include<iostream>
using namespace std;
//可以在类的声明中对常量的类变量进行赋值
class myclass
{
public:
static int i=20;
};
int myclass::i = 10;
int main()
{
cout<<myclass::i<<endl;
return 0;
}