继承构造函数

Version >= C++ 11

作为一种特殊情况,类范围中的 using 声明可以引用直接基类的构造函数。然后,这些构造函数由派生类继承,并可用于初始化派生类。

struct Base {
    Base(int x, const char* s);
};
struct Derived1 : Base {
    Derived1(int x, const char* s) : Base(x, s) {}
};
struct Derived2 : Base {
    using Base::Base;
};
int main() {
    Derived1 d1(42, "Hello, world");
    Derived2 d2(42, "Hello, world");
}

在上面的代码中,Derived1Derived2 都有构造函数,它们将参数直接转发给 Base 的相应构造函数。Derived1 显式执行转发,而 Derived2,使用继承构造函数的 C++ 11 特性,隐式执行。