2015-04-01 4 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) ответ. –

+0

конструктор копирования и конструктор перемещения. – Jarod42

+0

thnx! я просто вспомнил .. ссылка RValue предназначена для перемещения предметов, которые вот-вот будут уничтожены. – CantThinkOfAnything

ответ

4

Они не оба конструктора копирования, только первый: Quote(const Quote&) = default;. Второй - это конструктор перемещения , сделайте некоторое чтение семантики перемещения и C++ 11.

+1

'' Цитата (const Quote &) = default; '' является конструктором копирования. '' Quote & operator = (const Quote &) = default'' - оператор присваивания. '' Quote (Quote &&) = default'' - это конструктор перемещения. '' Quote & operator = (Quote &&) = default'' является оператором перемещения. –

+0

Хммм я вижу ... хотя в куске кода говорится: // // поместная копия. Так вот что меня смутило. Но я получил его сейчас, thnx – CantThinkOfAnything

Смежные вопросы