1.C++使用初始化列表初始化时,成员变量的初始化顺序:只与定义变量的顺序有关.
#include <iostream>
using namespace std;
class A{
private://结论:成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关;//第一种情况;//int n1;//先定义成员变量n1,先初始化n1,因为n1没有赋初值,所以n1是个随机数;//int n2;//后定义成员变量n2,因为后初始化n2,n2为0;//第二种情况;int n2;//先定义成员变量n2,先初始化n2,因为n2 = 0;int n1;//后定义成员变量n1,因为后初始化n1,n1 = 2 + 0为2;
public:A(): n2(0), n1(n2+2){}//初始化函数列表void Print(){cout << "n1:" << n1 << ", n2: " << n2 <<endl;}
};
int main(){A a;a.Print();return 1;
}2.C++不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关.
#include <iostream>
using namespace std;
class A{
private:int n1;//与成员变量声明先后顺序无关int n2;//
public://A(): n2(0), n1(n2+2){}//使用初始化函数列表A(){n2 = 0; n1 = n2 +2;}//不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关.void Print(){cout << "n1:" << n1 << ", n2: " << n2 <<endl;}
};
int main(){A a;a.Print();return 1;
}

C++成员变量初始化列表中初始化顺序相关推荐

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

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

  2. C++中类成员变量在初始化列表中的初始化顺序

    引子:我们知道,C++中类成员变量的初始化顺序与其在类中的声明顺序是有关的. 先看代码: 1 class TestClass1 2 { 3 public: 4 TestClass1() { 5 cou ...

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

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

  4. 【c++】构造函数初始化列表中成员初始化的次序性

    上代码 #include <iostream> using namespace std;class A {public:A(int v): j(v + 2), i(j) {}void pr ...

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

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

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

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

  7. java 静态成员 创建_Java学习笔记11---静态成员变量、静态代码块、成员变量及构造方法的初始化或调用顺序...

    当创建一个对象时,各种成员变量及构造方法的初始化或调用顺序是怎样的呢? (1).如果类尚未加载,则先初始化静态成员变量和静态代码块,再初始化成员变量,最后调用相应的构造方法: (2).如果类已经加载过 ...

  8. 必须在构造函数基/成员初始值设定项列表中初始化

    C++ primer 上面的一个例子:// constRef.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h"class constRef { ...

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

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

最新文章

  1. Fort.js – 时尚、现代的表单填写进度提示效果
  2. java实现遍历树形菜单方法——service层
  3. 网站CSS样式不起作用,或只有一部分起作用?随手记
  4. Windows在当前目录(文件)打开cmd窗口
  5. javaweb系统oracle锁表,oracle、websphere下获取数据库连接时出现死锁
  6. group by 查询分组后 各组的内部条数与组的条数
  7. 常用MIME类型(Flv,Mp4的mime类型设置)(转载)
  8. 例解List<Map<String, Object>>存放的对象问题
  9. mysql references关键字_mysql关键字有哪些?
  10. jetty快速入门与嵌入使用 jetty
  11. php mysql数据库同步_教你怎样在两台MySQL数据库间实现同步
  12. VB2010的串口能正常接收数据,但无法发送数值大于127的数据
  13. 基于Python的手写拼音识别
  14. echarts3D地球
  15. 如何做一场有创意的活动策划?
  16. Apache的性能解读
  17. 知乎问题下用户评论的爬取
  18. RankNet,LambdaRank,LambdaMart
  19. Mysql数据库存储ip地址
  20. 个人博客系统项目设计及结果展示图

热门文章

  1. [软件人生]关于认知,能力的思考——中国城市里的无知现象片段
  2. Hibernate框架基本使用
  3. 设计模式(十)外观模式
  4. C++:在堆上创建对象,还是在栈上?
  5. Java WebSocket生命周期
  6. 送给python新手关于pip用法和虚拟环境用法的介绍(英文)
  7. CentOS 6.5 Zabbix监.控系统功能及基本使用
  8. Python 学习笔记(五)杂项
  9. 30天敏捷生活(7):生成行动计划
  10. ViT (Vision Transformer) ---- SimpleRNN + Attention