您的位置:首页 > 其它

const 成员变量初始化规则

2012-06-27 09:56 295 查看
const的成员变量只能在类的构造函数初始化,如下编译报错

//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不是初始化,是赋值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: