struct Base{
Base(Base &){} // suppress default constructor
};
struct Derived : Base{
};
int main(){
Derived d;
}
'Base' の既定のコンストラクター (暗黙的) が抑制されているため、示されているコードはエラーを返します。確かに、標準は$ 12.1と言っています"If there is no user-declared constructor for class X, a default constructor is implicitly declared."
次の 3 つのことがあります。
a) ユーザーが宣言したコンストラクターがクラスに存在する場合、デフォルトのコンストラクター (暗黙的) が抑制されると標準はどこでも述べていますか? それは基本的に上記の否定的な言い回しですか、それとももう一度暗示されています:)?
b) なぜそのようになったのですか?
c) デフォルトのデストラクタに同じ規則が適用されないのはなぜですか?