在C++11中,继承构造函数是什么意思?如果它是我想的那样(基类构造函数被引入到派生类的作用域中),那么它对我的代码有什么影响?这种特性的应用是什么?
发布于 2012-04-02 23:33:12
继承构造函数就意味着这一点。派生类可以隐式继承其基类的构造函数。
语法如下:
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)使用声明来命名构造函数隐式声明了一组继承的构造函数。从使用声明中命名的类X继承的构造函数的候选集由实际构造函数和概念构造函数组成,这些构造函数由默认参数的转换产生,如下所示:
的末尾连续省略带有默认参数的参数而产生的一组构造函数模板
https://stackoverflow.com/questions/9979194
复制相似问题