我正在阅读斯坦利·利普曼(Stanley Lipmann)编写的C++入门手册第4版,我在第92页上介绍了值初始化。
我只是不了解何时进行值(value)初始化。我四处浏览,我知道还有默认初始化和零初始化。谁能解释一下值(value)初始化?
来到本段..
第a)条
我确实理解上面的内容,但是我发现下面的内容与上面的句子矛盾。
b)条
我不明白b条。
任何帮助表示赞赏
最佳答案
a)如果该类定义了其他构造函数,那么这是正确的-从而抑制了默认构造函数的生成。
struct Foo {
Foo(int n) : mem(n) {}
int mem;
};
此类无法进行值初始化。
b)如果该类未定义构造函数,则值初始化将简单地对所有子对象(基类和非静态成员)进行值初始化。
struct Foo {
Foo() : mem(0) {}
int mem;
};
struct Bar {
Foo f;
};
Bar
的值初始化只是意味着f
成员将被值初始化。参见例如What do the following phrases mean in C++: zero-, default- and value-initialization?