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."
有三件事:
a)标准是否在任何地方说明如果用户声明的构造函数存在于类中,则默认构造函数(隐式)被抑制。基本上上面的措辞是负面的,还是再次暗示:)?
b) 为什么会这样?
c) 为什么相同的规则不适用于默认析构函数?