在没有具有给定值的复制构造函数的情况下初始化const成员?

时间:2012-11-06 12:56:17

标签: c++ constructor const copy-constructor

  

可能重复:
  How to initialize a const field in constructor?

我有这堂课:

class Foo {
private:
    ...
public:
    Foo() : ... {}
    // no other constructors
    ...
};

和另一个通过引用持有Foo成员:

class Bar {
private:
    const Foo& m_foo;
    ...
public:
    Bar(const Foo& foo);
    // no other constructors
};

我的问题是:如何在构造函数中初始化Bar :: m_foo引用?

谢谢!

2 个答案:

答案 0 :(得分:6)

在构造函数初始化列表中:

Bar(const Foo& foo) : m_foo(foo)
{
}

const和参考成员必须在初始化列表中初始化,在这种情况下,成员都是。

答案 1 :(得分:3)

使用初始化列表:

Bar(const Foo& foo):m_foo(foo){}