什么是构造函数继承?

时间:2012-04-02 15:29:10

标签: c++ inheritance constructor c++11

在C ++ 11中,继承构造函数意味着什么?如果它是我认为的(基类构造函数被带入派生类的范围),它对我的​​代码有什么影响?这种功能有哪些应用?

1 个答案:

答案 0 :(得分:82)

继承构造函数意味着就是这样。派生类可以隐式地从其基类继承构造函数。

语法如下:

struct B
{
    B(int); // normal constructor 1
    B(string); // normal constructor 2
};

struct D : B
{
    using B::B; // inherit constructors from B
};

所以现在D隐式定义了以下构造函数:

D::D(int); // inherited
D::D(string); // inherited

Ds成员是由这些继承的构造函数默认构造的。

就像构造函数定义如下:

D::D(int x) : B(x) {}
D::D(string s) : B(s) {}

这个功能并不特别。它只是保存输入样板代码的简写。

以下是血腥的细节:

  

12.9继承构造函数

     

1)命名构造函数的using声明隐式声明了一个   继承构造函数集。候选集继承   来自使用声明中命名的类X的构造函数   由...产生的实际构造函数和名义构造函数   默认参数的转换如下:

     
      
  • X的所有非模板构造函数和
  •   
  • 对于X的每个非模板构造函数,它至少有一个带有默认参数的参数,即构造函数集   省略任何省略号参数规范和结果   从末尾开始用默认参数相继省略参数   参数类型列表和
  •   
  • X的所有构造函数模板和
  •   
  • 对于X的每个构造函数模板,它至少有一个带有默认参数的参数,即结果的构造函数模板集   从省略任何省略号参数规范和连续   使用默认参数从结尾省略参数   参数类型列表
  •   
相关问题