繼承建構函式

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 特性,隱式執行。