Добавление элемента, объявленного в стеке, в массив stati c - PullRequest
1 голос
/ 21 января 2020

Допустим, у меня есть std :: vector, который объявлен как stati c. Могу ли я добавить объекты, которые объявлены локально в стеке вызывающей функции, к вектору без последствий?

Насколько я понимаю, вектор хранит свои элементы в куче. Это означает, что если я скажу вектору MOVE элемент, подобный этому

myvector.push_back(std::move(element));

, он будет сохранен в куче, и его видимость сохранится, верно?

Редактировать: Я хотел бы избежать объект скопирован, потому что он управляет другими ресурсами.

Я прав? Или это можно сделать проще?

1 Ответ

1 голос
/ 21 января 2020

Обычно вы можете копировать инициализированные объекты с помощью динамического c хранилища, копируя из объектов с автоматическим c или stati c хранилищем и наоборот. То, копируется ли объект перемещением, не имеет значения.

Теоретически могут существовать классы, которые работают правильно только при определенном распределении, но такие классы следует сделать не копируемыми для предотвращения проблем.

...