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不是初始化,是赋值 |
const 成员变量初始化规则
最新推荐文章于 2024-07-17 14:03:39 发布