当我希望调用基类构造函数时,如何在派生类中初始化成员const引用?

时间:2013-02-02 17:18:06

标签: c++ class reference const derived

即使被问到任何地方,我也找不到这个问题......所以这让我相信我在这里做了一些非常错误的事......

假设我有一个基类A,带有一个接受int参数的构造函数。 在我的派生类B中,我希望调用该构造函数,但也初始化在B的构造函数中传递的成员引用。我怎样才能做到这一点?如果我调用基类构造函数,我找不到添加初始化列表的语法。这可能吗?

让我说我有:

Class Object
{
   Object(){}
}

Class A
{
   A(int number) : m_number(number){}

public:
   int m_number;
}

现在,如果我想调用A的非默认构造函数,我将如何初始化m_obj?

e.g。

Class B : Class A
{
   B(int number, const Object& objRef) : A(number)
   {
       m_obj = objRef; //error, : must be initialized in constructor base/member  
                       // initializer list...but I cannot access an initializer list!!
   }

private: 
   const Object& m_obj;
}

正如我所说,我的意图在这里可能都错了,但如果它有效,我在谷歌上找不到任何语法示例..

对我轻松......:)

1 个答案:

答案 0 :(得分:3)

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

B(int number, const Object& objRef) : A(number), m_obj(objRef)
{}

(注意,这与它是一个子类无关。你总是需要使用初始化列表来初始化一个引用的成员变量。)