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

在定义类的对象的时候,如果类中有定义构造函数,则调用用户自己定义的构造函数,没有则调用默认构造函数。

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

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

#include
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<
输出结果:

PS:在类的继承中,尤其是多重继承的时候,构造函数的初始化列表的初始化顺序是根据继承的先后开始先后执行父类的构造函数,最后才是子类自己的成员变量初始化。

你可能感兴趣的:(随笔)