C++11标准引入了继承构造函数的概念,在C++11之前,我们需要手动编写构造函数,以重用其他类的代码。如果我们想在新类中创建一个旧类的实例,我们通常需要编写一个新的构造函数,该函数只是为了直接调用旧类的构造函数。C++11引入了一种新的方法来继承构造函数,即使用特殊的语法来声明构造函数,以便从任何基类继承构造函数。
我们可以通过使用依赖typedef名来继承构造函数,如下所示:
class Base {
public:
Base(int value) {}
};
template
struct A {
typedef T value_type;
// Inherit Base's constructors.
using Base::Base;
};
int main() {
A a(42);
}
在这个例子中,我们使用了using Base::Base
语法来继承Base
类的构造函数。typedef
语句需要在A
模板类中声明,因为我们的构造函数依赖于该语句。
值得注意的是,使用这种方法时,我们需要确保基类的构造函数是可以公开访问的,以便子类可以继承它。如果基类构造函数被声明为私有,使用该方法会导致编译错误。
上一篇:标准如何定义C程序?
下一篇:标准深度嵌套数据类型?