class A{
private:
const int a = 1; //error: 只有静态整型常量可以在类中初始化
static const int h = 1; //ok
static const double h1 = 1.0; //error: 只有静态整型常量才能在类中初始化
const int b,c;
int d;
int &e=b; //error:只有静态变量才能在类中初始化。但引用必须定义时初始化,怎么办呢?在初始化列表中初始化
int &f;
static int g;
public:
A():c(1),f(d){ //ok:常量,引用只能在构造函数的初始化列表中初始化
b=1;//error:常量只能在构造函数的初始化列表中初始化
d=2;//ok:变量可以在这儿初始化,没问题
g=1;//error:静态变量在构造函数中不能初始化,不知道为什么?
}
};
int A::a; //加上这一句后,上边的g = 1;这一行就没问题了。静态变量必须在类定义体的外部定义一次。
//注意,这儿不能写成static int A::a; static关键字要去掉。
阅读(3615) | 评论(1) | 转发(0) |