使用关键字delete
可以防止编译器自动添加某些构造函数的标准实现。
此删除是否继承到子类?
答案 0 :(得分:8)
显然,但我不会确切地说该属性是不健康的。这是因为编译器生成的派生类构造函数使用了基类构造函数。例如,编译器生成的派生类的默认构造函数使用基类的默认构造函数。因此,如果基类默认构造函数不存在,无论出于何种原因(无论是显式删除还是其他原因),编译器都无法为派生类生成默认构造函数。但这并不能阻止您为派生类创建自己的构造函数,该构造函数使用与删除的基类构造函数不同的基类构造函数。
答案 1 :(得分:1)
使用关键字
delete
可以防止编译器自动添加某些构造函数的标准实现。
嗯,不是真的。是的,它确实实现了这个目的。但它也会阻止你自己实现该构造函数。
一般而言,构造函数不是继承的。删除基类中的构造函数 not 会导致派生类中的相应构造函数也被删除。它 强制编译器隐式地将派生类中的相应构造函数定义为已删除---但仅限于您自己未定义它。