构造函数中成员变量初始化顺序问题
2015-09-16 09:29
375 查看
在定义类的对象的时候,如果类中有定义构造函数,则调用用户自己定义的构造函数,没有则调用默认构造函数。
如果用户定义的构造函数是以参数列表的形式初始化成员变量,则成员变量的初始化顺序是按照成员变量的声明的顺序。
具体看下面的例子和输出结果:
PS:在类的继承中,尤其是多重继承的时候,构造函数的初始化列表的初始化顺序是根据继承的先后开始先后执行父类的构造函数,最后才是子类自己的成员变量初始化。
如果用户定义的构造函数是以参数列表的形式初始化成员变量,则成员变量的初始化顺序是按照成员变量的声明的顺序。
具体看下面的例子和输出结果:
#include<iostream> using namespace std; int i=1; class A { private: int i1; int i2; int i3; int& i4;//i4是引用,它的值随着引用对象改变而改变 public: A():i4(i3),i2(i++),i1(i++),i3(i++) { i3 = i; } void Fun() { cout<<i1<<" "<<i2<<" "<<i3<<" "<<i4<<endl; } }; int main() { A a; a.Fun(); return 0; }输出结果:
PS:在类的继承中,尤其是多重继承的时候,构造函数的初始化列表的初始化顺序是根据继承的先后开始先后执行父类的构造函数,最后才是子类自己的成员变量初始化。
相关文章推荐
- 安卓webview的一些坑
- Add Talents, Not Skills, to Your Team
- Broadcast消息机制
- Pay Your Debts
- Tomcat+Servlet保存Cookie到浏览器
- B-TREE+(自平衡树)
- 数据库索引(二)
- 高光BRDF化简公式
- Java的GC机制详解
- 音乐播放器app开源代码
- 《Cocos2d-x实战(卷Ⅰ):C++开发》目录 (仅供参考)
- 关于Android4.4以上版本的外置存储器路径问题
- SOCKET访问基本模型
- Effective C++——条款40(第6章)
- 唯一标示
- worldwind参考博客
- unity5+Vuforia SDK5实现高通AR在unity下的环境构建
- 分页计算方式
- Windows 7与 server 2003传输数据慢(netsh int tcp set global autotuninglevel=disable)
- LeetCode Contains Duplicate