class A{
public:
A(){};
};
class B : public A{
public:
using A::A;
B(const B&) = default;
B( B&&) = default;
};
B b;
编译器(克++(5.4.0-6ubuntu1)/ C++ 11)显示“呼叫到B :: B没有匹配的功能()“并列出副本并将构造函数移动为候选项。如果我评论那些违约的人,那么它编译。这是什么原因?它们有什么区别,他们明确默认?如果那两条线不在那里,那么它们将会被默认设置。C++默认构造不继承与“使用”时,移动和复制本构造
'using'不带所有的基构造函数。在某些情况下不会生成默认构造函数。 – Jarod42
不确定,但是一旦你明确声明了一个构造函数(不管它是否为默认构造函数),编译器将不会自动为你生成一个构造函数 – user463035818
请注意''使用A :: A;'不是这里问题的一部分:if你评论它,你会得到同样的错误。 –