Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C++11 介绍了这个:
struct MyClass { int foo = 0; //* };
直到现在我一直在使用它而不考虑它,但现在我想知道:
此初始化是否在此特定行(在代码中)执行/执行任何实际初始化,//*或者这仅仅是一种方便的表示法,仅在实际构造对象时才执行/执行某些操作?
//*
不确定您所说的“稍后”和“在此特定行”是什么意思,但上述内容等同于以下内容:
struct MyClass { MyClass() : foo(0) { } };
因此,如果我正确理解您的问题,那么答案是:“是的,只有在实际构造对象时”。
声明不是可执行代码,它们不执行任何操作。这只是一个方便的表示法,用于将foo零的初始化插入到您定义的每个构造函数中(或者插入到隐式定义的默认构造函数中,如果您自己没有定义任何构造函数)。
foo