Aktywne Wpisy
sandilinka +24
Mamy 2024 rok, a ciągle wiele osób używa buracko - peerelowskiego określenia "pasek wypłaty". Uświadomię was mentalne dziady: w normalnych pracach dostaje się wynagrodzenie na konto i nikt o żadnych paskach nie słyszał, nikomu do niczego nie są one potrzebne.
#oswiadczenie #praca #pracbaza
#oswiadczenie #praca #pracbaza
AnnDeArm +207
Widzieliście, jaki taniec e-------y odwaliła Kozidrak? xD
Dlaczego unique_ptr może być zwrócony przez funkcję przez wartość, skoro standard mówi, że zostaje on zniszczony podczas opuszczania zakresu ważności?
When certain criteria are met, an implementation is allowed to omit the copy/move construction of a class object [...] This elision of copy/move operations, called copy elision, is permitted [...] in a return statement in a function with a class return type, when the expression is the name of a non-volatile automatic object with the same cv-unqualified type as the function return type [...]
When the criteria
Nie wiem po co to gdybanie. Czyli jak dodam flagę -fno-elide-constructors, która wyłącza NRVO to nie będzie się dało zwrócić unique_ptr?
Edit: O tutaj: https://en.cppreference.com/w/cpp/language/copy_elision
Więc jeśli wchodzi RVO to nie ma w ogóle mowy o
std::unique_ptr
z funkcji jest on niszczony jak słusznie zauważasz, ale zanim zostanie zniszczony to zostaje wywołany move constructor i zasób na stercie jest przekazywany temu pointerowi do którego zwracasz z tej funkcji, a oryginalny po tej opracji zostaje wyczyszczony. I to potem ten pusty uniqueptr zostaje zniszczony przez wywołanie destruktora.Tutaj jako "ładunek" masz
int
zamiast pamieci na stercie która miałbys w przypadku smart pointera ale ta zasada jest ta sama.W srodku funkcji stwarzasz Cecylie z ladunkiem 3 i zwracasz ja do Aliny. Najpierw ladunek zostaje przeniesiony a potem pusta Cecylia jest niszczona. Na podobnej zasadzie dziala zwracania z unique_ptr
Patrz tylko na funkcje
main()
if()