Ja bych ti asi tak moc neresil, na objekt pouziji unique_ptr a ten objekt se mi proste presunuje, tam kam potrebuji. Po std::move se nemusim bat, ze bych to pouzil znova, protoze unique_ptr se vynuluje. Jasne, porad se zavola destruktor na unique_ptr, ale s tim asi dokazu zit (nezoptimaluzuje to v takovem pripade kompiler ?)
V C++ se musíš bát, že bys unique_ptr použil po move znovu, protože dereference nullptr je undefined behavior. Tohle v C++ nedopadne dobře:
auto a = std::make_unique<int>(0); auto b = std::move(a); std::cout << *a; // UNDEFINED BEHAVIOR
Destructive move řeší i tento případ, kdy se po move už objekt nedá znovu použít.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 593×
Přečteno 27 720×
Přečteno 26 401×
Přečteno 24 367×
Přečteno 22 864×