【发布时间】:2011-10-09 04:17:45
【问题描述】:
所有大多数构造函数推荐使用explicit关键字,这些构造函数可以用一个参数调用,除了复制构造函数。
对于复制构造函数,它有一个用途(禁止通过函数调用、返回等进行隐式复制),但这不是通常想要的。
移动构造函数呢?是否有任何合理的用例来明确它们?这里有什么好的做法?
【问题讨论】:
-
“复制构造函数”和“可以用一个参数调用的构造函数”有什么区别?我只是对 DeadMGs 的答案感到困惑,因为我认为这些是同一回事。这 is 只是它的使用方式,并且(除了“显式”)不是构造函数的声明方式,是吗?还是我疯了?
-
@Steve314:单参数复制构造函数具体是构造函数
T([const] [volatile] T&)。 12.8/2。T(int)是一个可以用一个参数调用的构造函数,但不是复制构造函数,因为它不会“复制”T的实例。 -
@Steve Jessop - 是的,当然。显然我已经脑死亡了。
-
感谢您的回答!那么我们是否可以同意没有合理的(即以明显的方式有益的)理由来明确说明?
-
也推荐用于在 C++0x 中只能为多个参数调用的构造函数。
标签: c++ c++11 explicit-constructor move-constructor