繼承建構函式
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 特性,隱式執行。