继承构造函数
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");
}
在上面的代码中,Derived1 和 Derived2 都有构造函数,它们将参数直接转发给 Base 的相应构造函数。Derived1 显式执行转发,而 Derived2,使用继承构造函数的 C++ 11 特性,隐式执行。