首页 > 解决方案 > C++ 中的“复制初始化上下文中的默认初始化”是什么意思?

问题描述

例如,我想我理解直接初始化(与复制)上下文中的列表初始化是什么意思 -int x{}int x = {}基本上。

但是在cppreference上我发现了这个:

当类类型的对象从相同或派生类类型的对象复制初始化,或在复制初始化上下文中默认初始化时,候选函数都是正在初始化的类的转换构造函数。参数列表是初始化器的表达式。

我想我理解为什么候选人会为第一种情况转换构造函数,而不是第二种情况。我的意思是,我不能写类似MyClass x = MyClass, 并且= MyClass()会是值初始化,并且= MyClass(args...)会是直接初始化的东西。

即使存在这样的构造,我也不明白为什么临时MyClass对象“构造”应该包括所有转换构造函数。

x正如我所看到的,这不是这里所说的,因为它绝对是复制构造的,而不是默认构造的。)

所以我想我对这里的术语感到困惑。

标签: c++initializationc++14overloadingc++17

解决方案


该措辞被添加在论文P0398R0中,旨在描述以下情况:

Z c = {};

对于非聚合Z


推荐阅读