继承构造函数
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 特性,隐式执行。