什么是构造函数inheritance?

在C ++ 11中,inheritance构造函数是什么意思? 如果这是我认为的(基类构造函数被引入派生类的范围),它对我的​​代码有什么影响? 这个function有什么用途?

inheritance构造器意味着这一点。 派生类可以隐式inheritance其基类(es)的构造函数。

语法如下:

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成员是由这些inheritance的构造函数构造的默认值。

就好像构造函数被定义如下:

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

这个function没什么特别的。 这只是简单的保存打字样板代码。

这里是血淋淋的细节:

12.9inheritance构造函数

1)一个使用声明,为一个构造函数隐式声明一组inheritance构造函数。 using-declaration中指定的类X的inheritance构造函数的候选集由实际构造函数和由默认参数转换得到的概念构造函数组成,如下所示:

  • X和X的所有非模板构造函数
  • 对于具有至less一个具有缺省参数的参数的X的每个非模板构造器,由于省略了任何省略号参数指定而产生的一组构造器,并且从参数types列表的末尾依次省略具有缺省参数的参数,和
  • X和X的所有构造函数模板
  • 对于每个具有至less一个具有缺省参数的参数的构造器模板,由于省略了任何省略号参数指定而产生的构造器模板集合,并且从参数types列表的末尾依次省略具有缺省参数的参数