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

时间:2016-02-05 18:29:02

标签: c++ constructor

假设我们将A声明为Type类型:

Type A;

问题:是此时调用的Type的{​​{1}}构造函数?或者只是在我们初始化A后才调用构造函数?

2 个答案:

答案 0 :(得分:1)

  

是此时调用的A的Type构造函数?或者只是在我们初始化A之后才调用构造函数?

在此初始化A,无论您是否明确为该流程提供了值。

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

所以,是的,一旦对象的生命周期开始,就会调用构造函数。那就是那个,那么,在那一行,或者当一个类成员当然是在封装类被初始化时它是这个成员的转向。 / p>

当然,您可以使用简单的std::cout对证明这一点。

答案 1 :(得分:0)

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

唯一的例外是:

Type a = value;

这里一些带有某些设置的编译器可以放松它并直接使用value作为参数调用构造函数。但它仍然需要成为声明的一部分。