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

标签 c++ class reference constants derived

我什至在任何地方都找不到这个问题......所以这让我相信我在这里做错了......

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

假设我有:

Class Object
{
   Object(){}
}

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

public:
   int m_number;
}

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

例如

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;
}

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

对我放轻松...:)

最佳答案

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

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

(注意,这与它是子类无关。您始终需要使用初始化列表来初始化作为引用的成员变量。)

关于c++ - 当我希望调用基类构造函数时,如何在派生类中初始化成员 const 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14664390/

相关文章:

java - 内部 lambda 引用 外部 lambda 变量

C++)为什么 const int*& 参数不能采用 int* 参数?

C++ 风格——const T& 与 T const&

c# - 逻辑问题: Given corners, 找到四边形的中心?

c++ - do-while 循环不断重复

c++ - 类局部变量的指针?

c++ - 如何在C++中制作类列表

php - 在 PHP 类中使用双冒号调用方法后将方法更改为静态

c++ - 除法为负股息,但四舍五入为负无穷大?

c++ - 查找 C++ 源文件的符号