const 成员变量的初始化
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;}