【问题标题】:difference between copy constructors?复制构造函数之间的区别?
【发布时间】:2015-06-05 18:03:48
【问题描述】:

我正在阅读 C++ Primer,这段代码让我有些困惑。也许我以前读过,但忘记了它是什么。

这段代码有 2 个复制构造函数,但我不知道它们之间有什么区别

class Quote {
public:
    Quote() = default;
    Quote(const Quote&) = default;    // <<== this one
    Quote(Quote&&) = default;         // <<== and this one
    Quote& operator=(const Quote&) = default;
    Quote& operator=(Quote&&) = default;
    virtual ~Quote() = default;
}

一般有什么区别?

双“&”是什么意思?

【问题讨论】:

  • this 答案。
  • 复制构造函数和移动构造函数。
  • 谢谢!我只记得.. RValue 参考用于移动即将被销毁的物品

标签: c++


【解决方案1】:

它们不是两个拷贝构造函数,只有第一个:Quote(const Quote&amp;) = default;。第二个是 move 构造函数,阅读一下 move 语义和 C++11。

【讨论】:

  • Quote(const Quote&amp;) = default; 是复制构造函数。 Quote&amp; operator=(const Quote&amp;) = default 是赋值运算符。 Quote(Quote&amp;&amp;) = default 是移动构造函数。 Quote&amp; operator=(Quote&amp;&amp;) = default 是移动操作符。
  • 嗯,我明白了......虽然在一段代码中它声明“// memberwise copy”所以这让我感到困惑。但我现在明白了,thnx
猜你喜欢
  • 2013-09-09
  • 2015-02-24
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多