0

C++11 介绍了这个:

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

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

此初始化是否在此特定行(在代码中)执行/执行任何实际初始化//*或者这仅仅是一种方便的表示法,仅在实际构造对象时才执行/执行某些操作?

4

2 回答 2

8

不确定您所说的“稍后”和“在此特定行”是什么意思,但上述内容等同于以下内容:

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

因此,如果我正确理解您的问题,那么答案是:“是的,只有在实际构造对象时”。

于 2013-05-04T12:06:34.700 回答
3

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

于 2013-05-04T12:08:06.400 回答