出现时,课堂初始化是“真实的”吗?

时间:2013-05-04 12:04:54

标签: c++ c++11

C ++ 11引入了这个:

struct MyClass {
  int foo = 0; //*
};

直到现在我一直在使用它而不考虑它,但现在我想知道:

这个初始化是在这个特定行(代码中为//*)执行/执行任何实际初始化,还是这只是一个方便的符号,只执行/执行稍后,当该对象实际上是构造的吗?

2 个答案:

答案 0 :(得分:8)

不确定“后来”和“在此特定行”的含义,但上述内容相当于以下内容:

struct MyClass {
    MyClass() : foo(0) { }
};

因此,如果我正确理解你的问题,那么答案是:“是的,只有在实际构建对象时才会这样做。”

答案 1 :(得分:3)

声明不是可执行代码,它们不执行任何操作。这只是一个方便的表示法,用于将foo的初始化插入到您定义的每个构造函数中(或者,如果您自己没有定义任何构造函数,则插入到隐式定义的默认构造函数中)。