C++的对象初始化主要分为:
- 默认初始化
- 值初始化
- 零初始化
- 直接初始化
- 复制初始化
- 列表初始化
- 聚合初始化
1. 默认初始化是:什么都不做,或者使用值初始化。
2. 值初始化:类似调用了对象的默认构造函数,不同的类型有不同的行为。
3. 零初始化:值初始化的一个子集,对目标进行置零操作。
4. 直接初始化是直接从匹配的构造函数实参来构造对象,可能引发隐式类型转换。
5.复制初始化是从其他对象复制构造对象。当其他对象是临时构造的对象时,现代编译器可以把构造和复制的处理简化为直接在目标对象上进行直接初始化。
6.聚合初始化是对聚合体的每个对象进行初始化,每个对象可能采用不同的初始化方法。
参照表

理解
对函数的形参,可以使用其他对象作为实参来进行复制初始化;也可以使用列表来完成临时对象和构造和复制的过程,可能被编译器优化成直接初始化。
返回值同理。
疑问
cppreference把labmda表达式的复制捕获划分为直接初始化表示不理解。