C++构造函数中初始化成员的先后顺序
来源:互联网 发布:淘宝装修比较好的店铺 编辑:程序博客网 时间:2024/05/16 00:55
给定一个类,我们都知道,类的构造函数是用来初始化类中的成员的。那么类中成员变量初始化的先后顺序是依据什么确定的呢?
看下面一段程序:
#include<iostream>using namespace std;class A{int a;int b;public:A() :b(0), a(b + 2){}void print(){cout << "a = " << a << " ,b = " << b << endl;}};int main(){A a;a.print();return 0;}
结果:
根据结构分析,a是一个地址,并没有被初始化。b=0说明b被成功初始化了。为什么会有这样的结果呢,只有一个原因是a先被初始化,之后b才被初始化。(如果b先被初始化,a的值应该为2)
那么C++中成员变量初始化的次序与什么相关呢?
答案是:类中成员变量初始化的先后次序与变量在类中被定义的先后次序有关。从类定义可一个看出我们先定义了a,然后定了b。这样的话在constructor中会先初始化成员变量a,再初始化b。
因此,只要我们将类中int b;放在int a;前就可以达到预期效果:a = 2, b = 0
一句话说,类中成员变量被初始化的顺序与成员变量在类中声明的先后顺序一致。与构造函数中被初始化的先后顺序无关。
阅读全文
0 0
- C++构造函数中初始化成员的先后顺序
- 成员初始化的先后顺序
- C++构造函数中成员对象的初始化顺序
- C++中构造函数,成员对象的初始化顺序
- c++ 中构造函数的调用先后顺序
- C++中多重继承构造函数调用的先后顺序
- java中成员初始化与构造器初始化的顺序
- 构造函数中成员变量初始化顺序问题
- java 构造函数 成员函数初始化顺序 以及多态的构造函数的调用顺序
- java 构造函数 成员函数初始化顺序 以及多态的构造函数的调用顺序
- Java中 初始化的先后顺序?
- C++成员变量、构造函数的初始化顺序
- C++类对象数据成员的构造函数初始化顺序
- C++成员变量、构造函数的初始化顺序
- C++中异常规格(异常抛出表)和 成员初始化表 的放置先后顺序
- 构造函数中初始化成员
- 类的成员变量 声明顺序 决定 初始化顺序(构造函数初始化列表不影响)
- C++中默认构造函数中数据成员的初始化
- Python 异常处理
- 000030:创建等价于if...else的三元运算符
- HashMap和ConcurrentHashMap浅析
- oracle 函数(function) NANVL的扩展,语法笔记
- 质因数分解 和 判断是否为质数
- C++构造函数中初始化成员的先后顺序
- composer安装yii advanced token的获取办法
- HTML页面的加载
- eclipse+JDK+汉化包+汉化说明
- python的学习和注意点初学的几个例子
- 网络安全实验室-基础-1
- vc++程序崩溃后不生成dump文件
- 完整获取图片根据图片链接地址
- 地雷游戏 递推