相关疑难解决方法(0)

需要一个示例,显示默认构造函数不会被继承

我知道默认构造函数不是继承的,如n3337中所述.

那里有一个例子:

struct B2 {
  B2(int = 13, int = 42);
};

struct D2 : B2 {
  using B2::B2;
};
Run Code Online (Sandbox Code Playgroud)

有很好的解释:

D2for 的继承构造函数的候选集B2

...
—B2(int = 13, int = 42)
—B2(int = 13)
—B2()
Run Code Online (Sandbox Code Playgroud)

最重要的是:

存在的构造函数集D2
—D2()隐式声明的默认构造函数,不是继承的

对我来说,这个例子没有显示出差异,从某种意义上说,即使这个构造函数是继承的 - 它的行为与隐式声明的默认构造函数没有区别.

我需要一个示例来说明可以轻松理解的方式的差异,比如说,熟悉C++ 03但想要学习C++ 11的观众.


[更新]
所有答案(包括我自己的答案)都是善良的" 如果继承了默认的c-tor,那么示例将编译/不编译 ".

我更喜欢答案,其中结果(可观察行为)与其他情况不同.

c++ inheritance default-constructor c++11 inherited-constructors

6
推荐指数
1
解决办法
426
查看次数