2015-04-01 128 views
0

我正在閱讀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; 
} 

就是一般的差之間?

和雙「&」是什麼意思?

+1

請參閱[本](http://stackoverflow.com/a/4549167/2899559)回答。 – 2015-04-01 07:14:53

+0

複製構造函數和移動構造函數。 – Jarod42 2015-04-01 07:14:58

+0

thnx!我只記得.. RValue參考是用於移動即將銷燬的物品 – CantThinkOfAnything 2015-04-01 07:24:37

回答

4

它們不是都是複製構造函數,只有第一個:Quote(const Quote&) = default;。第二個是移動構造函數,在移動語義和C++ 11上做一些閱讀。

+1

''Quote(const Quote&)= default;''是複製構造函數。 ''Quote&operator =(const Quote&)= default''是賦值操作符。 'Quote(Quote &&)= default''是移動構造函數。 ''Quote&operator =(Quote &&)= default''是移動操作符。 – 2015-04-01 07:17:33

+0

嗯,我明白了...雖然在代碼片中說「//成員複製」所以多數民衆贊成在混淆我。但我現在知道了,thnx – CantThinkOfAnything 2015-04-01 07:25:43