2015-10-03 54 views
0

也許這是一個微不足道的問題:我有一個基類B,它有一個帶有許多(6+)參數的構造函數(並且它不穩定,可能在未來會發生變化)。還有很多從它繼承的派生類,它們也具有相同的構造函數簽名,並且它們只是做基本的一個。在C++中聲明基類和派生類的'虛擬'構造函數?

所以問題是:有沒有辦法只聲明一次在基地,而不需要在派生類中聲明?就像一個普通的虛擬功能一樣。

我正在使用C++ 11。

+1

使用(http://en.cppreference.com/w/cpp/language/using_declaration) – 0x499602D2

+0

謝謝@ 0x499602D2 ,這正是我想要的! – jayven

回答

4

可以繼承所有基類的構造函數:[繼承構造]

struct base { 
    base(int, float, void*, bool, std::nullptr_t, std::size_t) { /* ... */ } 
}; 

struct derived : base { 
    using base::base; 
}; 



derived d(0,0.0f, nullptr, false, nullptr, 0);