C++ C++;构造函数初始化引用赋值

C++ C++;构造函数初始化引用赋值,c++,reference,constructor,initialization,C++,Reference,Constructor,Initialization,我相信这个问题以前有人问过。但我似乎找不到我正在寻找的确切答案。基本上,我试图创建一个类的对象作为另一个类的成员,并通过构造函数通过引用拥有的对象传递其中一个成员。有时这似乎有效,但有时我得到一个随机值 我认为我不理解初始化顺序的一些基本规则 下面是代码示例: class Foo { public: Foo(); private: int b; Bar c; }; class Bar { public: Bar(int& parm); private:

我相信这个问题以前有人问过。但我似乎找不到我正在寻找的确切答案。基本上,我试图创建一个类的对象作为另一个类的成员,并通过构造函数通过引用拥有的对象传递其中一个成员。有时这似乎有效,但有时我得到一个随机值

我认为我不理解初始化顺序的一些基本规则

下面是代码示例:

class Foo
{
public:
    Foo();
private:
    int b;
    Bar c;
};

class Bar
{
public:
    Bar(int& parm);
private:
    int& b_ref;
};

Foo::Foo(): b(0), c(b)
{}

Bar::Bar(int& parm): b_ref(parm)
{}
我想要的是c拥有一个对b的引用,并且能够看到值的变化


在这种情况下,我不应该使用初始化列表吗?

规则是按照对象在
类中声明的顺序初始化对象。在这种情况下,这意味着
b
c
之前已初始化,因此此代码应始终正常工作


如果您交换了
b
c
成员的顺序,那么
param
引用的
int
将不会在
Bar
的构造函数中初始化是的,我刚刚意识到我的实际代码已经交换了成员!谢谢你,这正是问题所在。