构造函数初始化问题
2015-11-19 11:14
260 查看
§对const类型的数据成员进行初始化时不能直接赋值,如下面的赋值操作是错误的。
因此,在C++中对const类型的数据成员进行初始化时必须为构造函数添加一个初始化列表,如下:
再次总结:(规则)
(1)构造函数的初始化段由一个冒号:开始,紧跟在冒号之后的是需要进行初始化的数据成员,然后是由一对小括号括起来的初始值。
(2)初始化列表仅在构造函数中有效,不能用于其他函数。
(3)构造函数的初始化列表可以初始化任何数据成员(const 和 非const),但const类型的数据成员只能在初始化列表里初始化,而不能用其他方法进行初始化。
class C { public: C() { x = 0; //OK,x not const c = 0; //ERROR,c is const } private: int x; //nonconst data member const int c; // const data member };
因此,在C++中对const类型的数据成员进行初始化时必须为构造函数添加一个初始化列表,如下:
class C{ public: C () :c(0) {x = -1} private: int x; const int c; //const data member };
再次总结:(规则)
(1)构造函数的初始化段由一个冒号:开始,紧跟在冒号之后的是需要进行初始化的数据成员,然后是由一对小括号括起来的初始值。
(2)初始化列表仅在构造函数中有效,不能用于其他函数。
(3)构造函数的初始化列表可以初始化任何数据成员(const 和 非const),但const类型的数据成员只能在初始化列表里初始化,而不能用其他方法进行初始化。
class C { public: C() : c(0), x(-1){} //empty body private: int x; const int c; //const data member };
相关文章推荐
- C-4.数组
- Connection reset by peer原因
- 基于SOAP的XML文档网络传输及远程过程调用
- 利用矩阵求两个序列的最长公共子序列
- 策略模式Strategy
- shell基本命令:使用命令行不全和通配符
- linux 链接 ftp命令
- java#学习笔记#遍历添加数组元素
- 如何正确将BOOL转bool
- 如何学习FPGA?FPGA学习必备的基础知识
- TextView过长显示省略号, TextView文字中间加横线
- qq第3方登录的JS实现方式记录
- oracle 查询
- Dependency annotations:
- openfire环境搭建并进行测试
- Jenkins安装
- nltk的简单应用
- iOS开发基础之C语言
- 安卓封装Baseadapter
- 初试MVVM框架之React入门【南大软院大神养成计划】