gpt4 book ai didi

c++ - C++ 隐式默认构造函数有什么意义?

转载 作者:太空狗 更新时间:2023-10-29 19:57:14 29 4
gpt4 key购买 nike

隐式默认构造函数有一个空的主体和一个空的初始化列表(原始类型未定义,默认构造函数被调用用于用户定义的类型)。

post

MyClass *c = new MyClass();

确实做了一个成员级的值初始化,但是在做的时候调用默认构造函数有什么意义

MyClass c;

?

是否调用了隐式默认构造函数,以确保调用用户定义类型(可能具有非平凡的默认构造函数)的默认构造函数?


更新

似乎在编译器生成的隐式默认构造函数被调用之后,对象可能不会被一致地实例化,即原始类型未定义,并且用户定义的类型可能(或可能不)处于已知状态,具体取决于程序员是否提供默认构造函数。

为什么编译器会生成一个隐式默认构造函数,调用时可能会实例化一个处于未知状态的对象?

最佳答案

隐式默认构造函数的点与任何其他构造函数的点相同。

需要构造给定类的每个实例。类实例本身不会凭空出现。某处某物负责构建对象。

如果未声明显式构造函数,则会自动定义隐式默认构造函数,默认构造类的父类(super class)和任何类成员。

这里,如果类成员是没有显式构造函数的原始类型,“默认构造”还包括“什么都不做”选项。所以,最终,隐式默认构造函数可能什么都不做。但如果未指定显式构造函数(当然,如果未显式删除隐式默认构造函数),它仍会被定义。

关于c++ - C++ 隐式默认构造函数有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181981/

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