默认构造函数

Chu*_*dad 2 c++ constructor destructor implicit copy-constructor

struct Base{
    Base(Base &){}        // suppress default constructor
};

struct Derived : Base{
};

int main(){
    Derived d;
}
Run Code Online (Sandbox Code Playgroud)

显示的代码给出了错误,因为"Base"的默认构造函数(隐式)被抑制.事实上,该标准以12.1美元计价"If there is no user-declared constructor for class X, a default constructor is implicitly declared."

有三件事:

a)标准是否说任何地方如果用户声明构造函数存在于类中,则默认构造函数(隐式)被抑制.它基本上是上面的措辞否定或是否再次暗示:)?

b)为什么会那样?

c)为什么相同的规则不适用于默认的析构函数?

Kon*_*lph 7

我认为a)被你的引言充分明确地暗示了.

至于"为什么" - 非常简单:默认构造函数并不总是有意义的; 如果没有办法压制它,这将大大削弱C++.

至于c),没有析构函数的类(没有"默认",只是普通的析构函数)根本没有意义.