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你評論它,你會得到同樣的錯誤。 –