由构造函数转换

Who*_*ami 5 c++ constructor copy-constructor implicit-conversion c++11

X类 - >通过两种方式转换为Y 1)构造函数,2)转换函数.
我理解单个参数构造函数用于转换.

在规范中:

隐式声明的复制构造函数不是显式构造函数; 可以调用它进行隐式类型转换.

题:

那么,这意味着不仅单个参数构造函数用于转换,还包括复制构造函数?如果是这样,它使用的是哪种情况?任何示例代码片段?

如果问题非常重要,请与我联系.

For*_*veR 1

隐式声明的复制构造函数不能用于转换,因为copy-ctor, 已声明为T(const T&)or T(T&)

\n\n

n3337 par 12.8 C++ 标准草案。

\n\n
\n

8 如果 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
\n\n

由于 copy c-tor 不明确,您可以使用这样的代码

\n\n
struct So\n{\n};\n\nint main()\n{\n    So s = So();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果copy-ctor是明确的,您只能使用初始化,例如So s((So()));

\n