我知道默認的構造函數不是繼承的,如n3337中所述。需要一個例子顯示默認的構造函數沒有繼承
而且這裏面就有一個例子:
struct B2 {
B2(int = 13, int = 42);
};
struct D2 : B2 {
using B2::B2;
};
有了相當不錯的解釋:
爲
B2
在D2
候選集繼承構造函數是... —B2(int = 13, int = 42) —B2(int = 13) —B2()
而且最重要的是:
集目前在
D2
構造函數是
—D2()
,隱式聲明的默認構造函數,而不是繼承
對我來說,這個例子沒有顯示出差異,在一定意義上,即使這很構造函數是繼承的 - 它的行爲與隱式聲明的默認構造函數沒有區別。
我需要一個例子來說明可以輕鬆理解的方式,比如說,熟悉C++ 03但希望學習C++ 11的用戶。
[更新]
全部回答(包括我自己)是一種 「如果默認的C-TOR被繼承,則示例將編譯/不能編譯」。
我更喜歡結果(可觀察行爲)與其他情況不同的答案。
在提案看(例如,[N2203](http://www.open-std.org/JTC1/SC22/WG21/docs/papers /2007/n2203.html)),這似乎是(部分?)不繼承複製/移動和默認ctors的基本原理。 – dyp