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不是初始化,是赋值 |
相关文章推荐
- const 成员变量初始化规则
- const 成员变量初始化规则
- 【转】Java类成员变量默认初始化规则
- 【转】Java类成员变量默认初始化规则
- C++ static、const和static const类型成员变量声明以及初始化
- C++ static、const和static const类型成员变量声明以及初始化
- [置顶] C++ static、const和static const类型成员变量声明以及初始化
- C++ static、const和static const类型成员变量声明以及初始化
- C++ static、const和static const类型成员变量声明以及初始化
- C++中const成员变量的初始化
- C++常量折叠和类中const、static成员变量初始化
- C++中的拷贝构造函数和拷贝赋值操作符+const成员变量初始化(5)---《Effective C++》
- C++类const成员变量初始化
- C++ static、const和static const类型成员变量声明以及初始化
- c++类中const/static/const static成员变量初始化
- c++类中成员变量的初始化总结(修正版)
- C++类中成员变量的初始化
- 构造函数及其成员变量初始化顺序详解
- [C++] 类成员变量初始化
- 特殊数据类型成员变量的初始化【转】