Я знаю, что это очень простой, возможно даже смущающий вопрос, но у меня возникли проблемы с пониманием этого. Если я std :: перейду от чего-то в стек к другому объекту, может ли другой объект по-прежнему использоваться, когда оригинал выходит из области видимости?std :: перемещение по объекту стека
#include <iostream>
#include <string>
int
main(int argc, char* argv[])
{
std::string outer_scope;
{
std::string inner_scope = "candy";
outer_scope = std::move(inner_scope);
}
std::cout << outer_scope << std::endl;
return 0;
}
Является ли outer_scope все еще действительным, когда я пытаюсь его распечатать?
Да, конечно. Вся цель конструктора/назначения перемещения заключается в том, чтобы украсть содержимое из временных рядов - это было бы бесполезно, если бы построенный объект не мог использоваться после того, как временный вопрос оканчивается. –
Если вы что-то двигаете, это значит, что вы переместили его сейчас, и теперь контроль над ним больше не выполняется. – NathanOliver
Конечно, это – MikeMB