只有静态常量整型数据成员才可以在类中初始化

时间:2022-09-09 15:11:17

常整型静态数据成员可以在类中直接初始化,而常实型静态数据成员不可以

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;

另一篇博客:

http://blog.csdn.net/asongnic/article/details/4631735

下面这段代码是正确的:

#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;
}