C ++:如何在派生类中定义基类构造函数,如果基构造函数具有带有私有成员的初始化列表[重复]

Posted

技术标签:

【中文标题】C ++:如何在派生类中定义基类构造函数,如果基构造函数具有带有私有成员的初始化列表[重复]【英文标题】:C++:How to define a base class constructor inside the derived class,if the base constructor has initialization list with private members [duplicate] 【发布时间】:2016-02-16 16:42:38 【问题描述】:

我在 c++ 库中有以下基类 A: 在 a.h 头文件中:

class A
 
private:
    double param1_;
    B* param2_; //Another library class
    void function();
public:
  A();

在对应的a.cpp源文件中存在以下实现:

A::A() :
  param1_(1.0),
  param2_(NULL)
  
  function();
  

void A::function()

    some code

我想创建一个继承类A的类B,并在派生类B的构造函数中隐式定义类A的构造函数。我对A类构造函数的实现中的初始化列表有点困惑。我写道:

在 b.h:

class B:: public A
public B();

我应该如何在b.cpp文件中定义基类构造函数??

另外我应该如何在派生类构造函数中隐式定义基类构造函数,因为在构造函数内部调用了基类私有函数?

【问题讨论】:

public B(); 语法无效。 【参考方案1】:

B.h:

class B: public A
public:
 B();

B.cpp:

B::B() : A(parameters) 

【讨论】:

不起作用,产生如下错误:A::A() A();候选人期望 0 个参数,提供 2 个 @juls 好吧,如果A 的构造函数不带任何参数,则不要传入任何参数。

以上是关于C ++:如何在派生类中定义基类构造函数,如果基构造函数具有带有私有成员的初始化列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

类的继承

继承类中的构造函数?

C++/MFC多重继承调用基类构造函数

是否可以在 C# 中覆盖构造函数?

c++解决二义性的方法

如何在基类构造函数中使用派生类成员