Используя std :: перемещение с конструктором (тип t) или конструктора (type && t). В чем разница?C++

Программы на C++. Форум разработчиков
Anonymous
Используя std :: перемещение с конструктором (тип t) или конструктора (type && t). В чем разница?

Сообщение Anonymous »

Я изучаю STD :: MOVE Семантика, и я хотел бы, чтобы это было уточнено мне:
Скажите, что я имею:

Код: Выделить всё

// Message.h
class Message
{
private:
std::array buffer;
std::queue packets;

public:
Message(Packet p)
{
packets.push(std::move(p));
}
}
< /code>
Теперь у меня есть: < /p>
Packet p;

p 
Но я не вижу разницы. Первый предотвращает копию (даже с этим конструктором), а секунд разрешает копию? Или нет?Message(Packet&& c)

Я прав, что в этом случае не будет сделано никаких копий, и я в основном заставляю программиста использовать std :: move (a) в противном случае программа не будет компилировать?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ats-the-di

Вернуться в «C++»