您的位置:首页 > 其它

构造函数中成员变量初始化顺序问题

2015-09-16 09:29 375 查看
在定义类的对象的时候,如果类中有定义构造函数,则调用用户自己定义的构造函数,没有则调用默认构造函数。

如果用户定义的构造函数是以参数列表的形式初始化成员变量,则成员变量的初始化顺序是按照成员变量的声明的顺序。

具体看下面的例子和输出结果:

#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:在类的继承中,尤其是多重继承的时候,构造函数的初始化列表的初始化顺序是根据继承的先后开始先后执行父类的构造函数,最后才是子类自己的成员变量初始化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: