gpt4 book ai didi

c++ - 默认构造函数

转载 作者:太空狗 更新时间:2023-10-29 23:47:50 28 4
gpt4 key购买 nike

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

struct Derived : Base{
};

int main(){
Derived d;
}

显示的代码会出错,因为“Base”的默认构造函数(隐式)被抑制了。事实上,标准在 $12.1 中说“如果类 X 没有用户声明的构造函数,则隐式声明默认构造函数。”

三件事:

a) Does the standard say anywhere that if the user declared constructor is present in a class, the default constructor (implicit) is suppressed. It is bascically the above phrased negatively or is it once again implied :)?

b) Why is it that way?

c) Why the same rules do not apply for the default destructor?

最佳答案

我认为 a) 在您的引述中已经足够清楚地暗示了。

至于“为什么”——很简单:默认构造函数并不总是有意义的;如果没有办法抑制它,这将大大削弱 C++。

至于 c),一个没有析构函数的类(没有“默认”,只是普通的析构函数)根本就没有意义。

关于c++ - 默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3701280/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com