我知道默认构造函数不是继承的,如n3337中所述。
那里有一个例子:
struct B2 {
B2(int = 13, int = 42);
};
struct D2 : B2 {
using B2::B2;
};
有很好的解释:
D2
for中的候选继承构造函数集B2
是... —B2(int = 13, int = 42) —B2(int = 13) —B2()
最重要的是:
中存在的构造函数集
D2
是
—D2()
,隐式声明的默认构造函数,不是继承的
对我来说,这个例子并没有显示出差异,从某种意义上说,即使这个构造函数是被继承的——它的行为与隐式声明的默认构造函数并没有什么不同。
我需要一个示例,以让熟悉 C++03 但想学习 C++11 的观众易于理解。
[更新]
所有答案(包括我自己的)都是“如果默认 c-tor 被继承,那么示例将编译/不编译”。
我更喜欢结果(可观察到的行为)与其他情况不同的答案。