C ++ 11引入了这个:
struct MyClass {
int foo = 0; //*
};
直到现在我一直在使用它而不考虑它,但现在我想知道:
这个初始化是在这个特定行(代码中为//*
)执行/执行任何实际初始化,还是这只是一个方便的符号,只执行/执行稍后,当该对象实际上是构造的吗?
答案 0 :(得分:8)
不确定“后来”和“在此特定行”的含义,但上述内容相当于以下内容:
struct MyClass {
MyClass() : foo(0) { }
};
因此,如果我正确理解你的问题,那么答案是:“是的,只有在实际构建对象时才会这样做。”
答案 1 :(得分:3)
声明不是可执行代码,它们不执行任何操作。这只是一个方便的表示法,用于将foo
的初始化插入到您定义的每个构造函数中(或者,如果您自己没有定义任何构造函数,则插入到隐式定义的默认构造函数中)。