C++构造函数称为预初始化

Are C++ constructors called pre-initialization?

本文关键字:初始化 构造函数 C++      更新时间:2023-10-16

假设我们声明A为类型Type

Type A;

问题:此时是否调用AType构造函数?还是只有在我们初始化A之后才调用构造函数?

此时是否调用了 A 的类型构造函数?还是只有在我们初始化 A 之后才调用构造函数?

在此处初始化A,无论您是否为该进程显式提供了值。

没有机会在"以后"初始化A;您只能在以后分配给它。(早期的C文本在声明很久之后谈论"初始化"数值,但这是一种不同的语言,不同的世纪和一组不同的描述性习语。

所以,是的,构造函数在对象的生存期开始后立即调用。要么就在那里,然后,在那一行,要么如果是一个类成员,那么当然是初始化封装类的时候,轮到这个成员了。

当然,你可以用一个简单的std::cout对来证明这一点。

是的,它会立即调用。 当您为其赋值时,将改为调用赋值运算符。

唯一的例外是:

Type a = value;

在这里,一些具有某些设置的编译器可能会放宽它,并使用值作为参数直接调用构造函数。但它仍然需要成为宣言的一部分。