我知道默认构造函数是不被继承的,正如在n3337中所述。
下面有一个示例:
struct B2 {
B2(int = 13, int = 42);
};
struct D2 : B2 {
using B2::B2;
};
非常好的解释:
The candidate set of inherited constructors in
D2
forB2
is
... —B2(int = 13, int = 42) —B2(int = 13) —B2()
最重要的是:
D2
中存在的构造函数集合为:
—D2()
,隐式声明的默认构造函数,未继承
对我来说,这个例子并没有展示出不同之处,因为即使这个构造函数被继承了,它的行为也不会与隐式声明的默认构造函数不同。
我需要一个例子,能够展示出区别,并且对于熟悉 C++03 但想学习 C++11 的观众来说易于理解。
[更新]
所有答案(包括我的)都是 "如果默认构造函数被继承,则示例将编译/不编译" 这种类型的。
我更喜欢答案中的结果(可观察行为)与否有所不同。