【发布时间】:2016-10-10 06:55:27
【问题描述】:
我正在准备关于复制构造函数的讲座,结果发现:
MyClass myFunction()
{
MyClass mc;
return mc;
}
声明说:
如果我们调用 myFunction,那么 C++ 将创建一个新的 myClass 对象 当 myFunction 返回时,它被初始化为 mc 。因此,虽然你的代码 可能表现得好像它正在透明地从内部移动对象 myFunction 到你的代码的其余部分,它实际上是一个临时的 复制。
我认为声明 MyClass mc;将创建对象并且它返回表单函数而不是任何临时对象。 我哪里错了?有人可以详细说明语句以便于理解吗?
【问题讨论】:
-
NRVO(命名返回值优化)省略了复制构造函数(应用时)。
-
而移动构造函数(如果可用)正是移动。我认为,讲座非常过时,根本不清楚。
标签: c++ copy-constructor