初始化列表顺序
2012-11-18 14:14
176 查看
以初始化列表的形式在构造函数中对类的成员变量初始化时,初始化的顺序和变量声明的顺序一致(不是初始化列表中的顺序)。当初始化列表中的顺序和成员变量声明的顺序不一致时,编译会产生警告(g++中打开-Wall):
XXX will be initialized after XXX when initialized here
之所以有警告,是因为这么做可能会产生潜在的问题,如
XXX will be initialized after XXX when initialized here
之所以有警告,是因为这么做可能会产生潜在的问题,如
class Test { private: int m_i; int m_j; public: Test(int i): m_j(i), m_i(m_j) {} };如果按照初始化列表中的顺序,先初始化m_j为i,再初始化m_i为m_j,没有问题,但是实际的初始化顺序是先初始化m_i,再初始化m_j,所以m_i的值在初始化后是不确定的,因为m_i初始化时m_j还没有被初始化,其值不确定。
相关文章推荐
- C++类成员初始化顺序(用初始化列表)
- 初始化列表的顺序应该是按照你成员声明顺序初始化
- JAVA面试题解惑系列(一)——类的初始化顺序
- 七、数据结构基础之顺序串C语言实现
- 栈的c语言顺序实现(动态申请空间)
- 关于TCP是怎么保证发包顺序的。
- 数据结构 — 6.顺序队列(循环)实现二叉树层次遍历
- 线性表的顺序表示
- margin和border简写的顺序
- 每天一道LeetCode-----将m × n矩阵按照顺时针螺旋顺序转化成一维数组
- Group By 和 Having, Where ,Order by语句的执行顺序
- 顺序文件的选用
- C++容器:顺序容器,关联容器
- nyoj68三点顺序
- 第七周 项目1-建立顺序环形队列算法库
- 顺序栈的操作
- Effective JavaScript Item 46 优先使用数组而不是Object类型来表示有顺序的集合
- 读书笔记《C++ Primer》第五版——第九章 顺序容器
- asp.net页面的加载顺序
- try中的return与finally执行的顺序