Przeszedłem niektóre kodu źródłowego C++ from a library związane z projektu zwierząt domowych, nad którym pracuję i napotkałem coś, czego nie rozumiem. W miejscu, gdzie spodziewałem się dereference wskaźnika następuje w drodze cesji, autorzy biblioteki użyć std::swap()
pod koniec funkcji, aby zapisać wynik:przy użyciu std :: swap zamiast przydziału z operatorem "="
std::swap(*out, result);
Spodziewałem się zobaczyć coś takiego:
*out = result;
Zauważ, że result
jest typedef
z size_t
i out
jest wskaźnikiem do tego samego typu.
Jeśli chodzi o "programowanie systemów", moje tło jest w C i C#, ale niewiele w C++. Czy istnieje jakiś szczególny powód tego rodzaju "zadania"?
Jeśli wartość 'result' jest * nie * używana po zamianie,' std :: move' może być lepszym wyborem. Zobacz także [Czym dokładnie jest wartość R w C++?] (Http://stackoverflow.com/q/9406121/608639). – jww
@jww, 'wynik' nie jest używany po wywołaniu' std :: swap'. – easuter