Who*_*ami 5 c++ constructor copy-constructor implicit-conversion c++11
X类 - >通过两种方式转换为Y 1)构造函数,2)转换函数.
我理解单个参数构造函数用于转换.
在规范中:
隐式声明的复制构造函数不是显式构造函数; 可以调用它进行隐式类型转换.
题:
那么,这意味着不仅单个参数构造函数用于转换,还包括复制构造函数?如果是这样,它使用的是哪种情况?任何示例代码片段?
如果问题非常重要,请与我联系.
隐式声明的复制构造函数不能用于转换,因为copy-ctor, 已声明为T(const T&)or T(T&)。
n3337 par 12.8 C++ 标准草案。
\n\n\n\n\n8 如果 X 的每个直接或虚拟基类 B 都有第一个参数为 的复制构造函数,则类 X 的隐式声明的复制构造函数将具有\n 形式 X::X(const X&)类型为 const B& 或 const\n 易失性 B&,以及 \xe2\x80\x94 对于属于类类型 M(或其数组)的 X 的所有非静态数据成员,每个此类类型都有一个副本\n 第一个参数为 const M& 或 const\n volatile M&.119 类型的构造函数。否则,隐式声明的复制构造函数\n 将采用 X::X(X&) 形式
\n
由于 copy c-tor 不明确,您可以使用这样的代码
\n\nstruct So\n{\n};\n\nint main()\n{\n So s = So();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n如果copy-ctor是明确的,您只能使用初始化,例如So s((So()));