如何声明默认构造函数

how to declare default constructor

本文关键字:默认 构造函数 声明 何声明      更新时间:2023-10-16

我有一个基类,我无法修改源代码。我从中创建了一个派生类,并尝试为这个派生类创建一个无参数构造函数。问题是我无法定义构造函数有两个原因:没有为基类定义非参数构造函数来使用它。我无法传递基构造函数的默认值。

  class base
  {
      public:
      base (A arg)
      {
      }
  };
  class derived : public base
  {
      public:
      derived () : base (arg)  //ERROR
      {
      }
  };

是否有为派生类定义非参数构造函数的解决方案?亲切感,

由于您无法更改基类,因此剩下的唯一选择是将参数传递给其构造函数。通过构造 A 的临时实例并将其传递给 ctor 初始化的派生类列表中的基类,您可以非常轻松地做到这一点。

derived::derived () : base (A())
{
}

在上面的代码中,base(A())将创建一个临时的A实例,并将其传递给base的构造函数。