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

时间:2013-03-18 04:38:44

标签: c++ reference constructor initialization

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

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

以下是代码示例:

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的引用,并且能够在值发生变化时看到该值。

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

1 个答案:

答案 0 :(得分:3)

规则是对象按照class中声明的顺序进行初始化。在这种情况下,这意味着bc之前初始化,因此此代码应始终正常运行。

如果您交换了bc成员的顺序,则int引用的param尚未在Bar的构造函数中初始化}。