首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是构造函数继承?

什么是构造函数继承?
EN

Stack Overflow用户
提问于 2012-04-02 23:29:10
回答 1查看 27.1K关注 0票数 68

在C++11中,继承构造函数是什么意思?如果它是我想的那样(基类构造函数被引入到派生类的作用域中),那么它对我的代码有什么影响?这种特性的应用是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-02 23:33:12

继承构造函数就意味着这一点。派生类可以隐式继承其基类的构造函数。

语法如下:

代码语言:javascript
复制
struct B
{
    B(int); // normal constructor 1
    B(string); // normal constructor 2
};

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

因此,现在D隐式定义了以下构造函数:

代码语言:javascript
复制
D::D(int); // inherited
D::D(string); // inherited

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

构造函数的定义如下所示:

代码语言:javascript
复制
D::D(int x) : B(x) {}
D::D(string s) : B(s) {}

这个特性没有什么特别之处。这只是一种省去输入样板代码的速记方法。

下面是一些血淋淋的细节:

12.9继承构造函数

1)使用声明来命名构造函数隐式声明了一组继承的构造函数。从使用声明中命名的类X继承的构造函数的候选集由实际构造函数和概念构造函数组成,这些构造函数由默认参数的转换产生,如下所示:

  • X的所有非模板构造函数,
  • 用于X的每个非模板构造函数,X的每个非模板构造函数具有至少一个具有默认实参的参数,省略任何省略参数规范并从参数类型列表的末尾连续省略具有默认实参的参数所产生的一组构造函数,
  • X的所有构造函数模板,以及
  • 用于X的每个具有至少一个具有默认实参的参数的构造函数模板,由于省略任何省略号参数规范并从parameter-type-list

的末尾连续省略带有默认参数的参数而产生的一组构造函数模板

票数 88
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9979194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档