构造函数初始化列表仅用于初始化成员的值,并不指定这些初始化执行的次序。成员被初始化的次序就是定义成员的次序。第一个被定义的成员先被初始化,依次类推。一般,初始化的顺序无关紧要,然而,如果一个成员是根据其他成员而初始化,则成员的初始化顺序是至关重要的。
class x {
  int   i;//声明顺序是先i,后j,故初始化列表中,会先初始化i,在初始化j
  int   j;
public:
    x(int  tem): j(tem),i(j){}    //看起来是先初始化j,然后初始化i,其实恰恰相反,先用未初始化的j来初始化i,虽然编译器不会提示你什么,但是j未初始化它便由计算机随即分配的内存存储,它的值也是随即的,这个值可能不是你想要的,错误就出现了。将i和j的声明顺序调过来就没有问题了。
};

初始化列表的初始化顺序相关推荐

  1. [面试] C++ 语法(一) —— 初始化列表的初始化顺序

    首先来看一道经典的 C++ 面试题: (1)初始化列表的初始化顺序:不是按照列表的顺序进行的 (2)初始化列表的初始化顺序:是按照内存模型中的成员变量的顺序(也即类声明的定义顺序)进行的: (3)也即 ...

  2. 为什么不能在子类的初始化列表里初始化父类的成员

    好几次遇到此类问题了:便不得不找些资料弄明白它: 具体代码是: 2 3 4 5 6 7 8 9 10 class A { protected:     int n_; }; class B : pub ...

  3. C++类构造函数初始化列表及初始化成员变量的误区

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: [cpp] view plaincopy class CExample { pub ...

  4. 子类初始化列表不能初始化父类元素 -- class 'Derived' does not have any field named 'x'

    缘由 偶尔编写如下代码,编译出错, class Base{public:int x; };class Derived : public Base {public:Derived() : x(10) { ...

  5. C++必须使用【初始化列表】初始化数据成员的三种情况

    类对象的构造顺序是这样的: 1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员: 2.进入构造函数后在构造函数中执行一般赋值与计算. 使用初始化列表有两个原因: 原因1.必须这样做: < ...

  6. 28.构造函数中,成员变量一定要通过初始化列表来初始化的?

    首先要明确:如果对象成员是const或者引用的话,必须将其初始化! 构造函数中,成员变量一定要通过初始化列表来初始化的的几种情况! 1)对象成员是const或者引用 #include <iost ...

  7. C++经典问题:如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B?

    对象成员特点总结: (1)实例化对象A时,如果对象A有对象成员B,那么先执行对象B的构造函数,再执行A的构造函数. (2)如果对象A中有对象成员B,那么销毁对象A时,先执行对象A的析构函数,再执行B的 ...

  8. C++成员变量初始化列表中初始化顺序

    1.C++使用初始化列表初始化时,成员变量的初始化顺序:只与定义变量的顺序有关. #include <iostream> using namespace std; class A{ pri ...

  9. 构造函数中,成员变量一定要通过初始化列表来初始化的几种情况(转载)

    1.参考博客 博客链接1 博客链接2 2.实例如下 class A { ... private:int a; }; class B : public A { ... private:A &aa ...

最新文章

  1. RouterOS配置脚本
  2. 内存数据库MemSQL ——基于内存,MVCC+哈希表、跳表
  3. Composer 安装(一)
  4. org.springframework.jdbc.core.JdbcTemplate 无法import原因分析
  5. 用计算机打出圣诞树,手机计算器圣诞树的祝福输入方式,手机计算器圣诞树获得方法...
  6. BLAS+BLACS+LAPACK+SCALAPACK安装
  7. 连接SQL Server文件集锦
  8. vue中watch数组或者对象
  9. PageRequestManager
  10. odoo 财务会计相关介绍
  11. C++实现离散余弦变换(参数为二维指针)
  12. 英文课程名称 c语言程序设计,课程名称C语言程序设计I.doc
  13. Python 安装pytz
  14. Python技术pip的使用命令总结
  15. Unity VRAR Unity播放全景视频及优化极点变形twist问题
  16. ucenter java版客户端
  17. 3年汽车软件测试工程师的经验总结
  18. SQL优化 —— in与not in
  19. Adobe Dreamweaver CS5下载安装
  20. 网上图书订阅系统之(招标书,投标书)

热门文章

  1. PC端微信小程序字体无法显示加粗
  2. 【算法】位运算——左移右移
  3. 一文读懂什么是POE交换机,原理、标准、功率、应用
  4. 生化危机系列中有实用价值且能最快实现的技术
  5. 品尝棉花糖之Nexus5线刷Android6.0攻略
  6. 面向对象编程:多态性的理论与实践
  7. Attention Model(注意力模型)学习大全
  8. 《Qt 6.x从入门到精通》简介
  9. 单目视觉(5):SFM之特征点匹配(四)
  10. 超频到3200最佳时序_XPG 龙耀 D50 重装铠甲RGB内存 来了超频颗粒、1.95mm加厚散热...