const 成员变量的初始化
时间:2011-03-01 来源:studycpp
//const.h#include<iostream>
class CConst
{
public:
CConst();
void print()
{
std::cout<<"----"<<cs<<std::endl;
}
private:
const int cs;
};
//const.cpp#include"const.h"
CConst::CConst()
{
}
int main(int argc, char* argv[])
{
CConst* a = new CConst();
a->print();
return 0;
}
编译报错error C2758: 'cs' : must be initialized in constructor base/member initializer list
将const.cpp修改为:
#include"const.h"
CConst::CConst()
{
cs = 0;
}
int main(int argc, char* argv[])
{
CConst* a = new CConst();
a->print();
return 0;
}
仍然报错:
error C2758: 'cs' : must be initialized in constructor base/member initializer list
修改为下面形式后,正常:
#include"const.h"
CConst::CConst():cs(0)
{
//cs = 0;
}
int main(int argc, char* argv[])
{
CConst* a = new CConst();
a->print();
return 0;
}
原因是,const数据成员的初始化只能在类的构造函数的初始化表中进行,而中间那种实现之所以报错,是因为cs=0不是初始化,是赋值
相关阅读 更多 +