yap*_*m01 10 c++ initialization
我正在阅读Stanley Lipmann撰写的c ++ primer第4版,我在第92页关于值初始化.
关于价值初始化,我只是不明白.我浏览了一下,我知道还有默认的初始化和零初始化.任何人都可以解释价值初始化吗?
来到这一段..
第a)条
"有些类没有定义默认构造函数.我们不能通过只指定一个大小来初始化这种类型的向量,我们还必须指定一个初始值"
我确实理解了上述内容,但我发现下面与上述句子相矛盾.
第b)条
"元素类型可能是一个没有定义任何构造函数的类类型.在这种情况下,库仍然会创建一个初始化值的对象.它是通过初始化该对象的每个成员来实现的."
我不明白条款b.
任何帮助表示赞赏
a)如果类定义了其他构造函数,那么这是正确的- 从而抑制了默认构造函数的生成.
struct Foo {
Foo(int n) : mem(n) {}
int mem;
};
Run Code Online (Sandbox Code Playgroud)
此类不能进行值初始化.
b)如果类没有定义构造函数,则value-initialization将简单地初始化所有子对象(基类和非静态成员)
struct Foo {
Foo() : mem(0) {}
int mem;
};
struct Bar {
Foo f;
};
Run Code Online (Sandbox Code Playgroud)
值初始化Bar只是意味着f成员将进行值初始化.