Wpis z mikrobloga

@Danieru: Zgodnie z obrazkiem w temacie, który podlinkowałeś:
glvalue to ogólnie coś co ma adres
rvalute to ogólnie coś co można przesuwać(dzięki move semantics, mam nadzieję, że wiesz o co chodzi)
lvalue to coś co ma adres ale nie można tego przesuwać
xvalue to taki mix czyli ma adres i można przesuwać
prvalue nie ma adresu ale można przesuwać
  • Odpowiedz
via Android
  • 0
@robko
O move semantics słyszałem na prelekcji i trochę czytałem. Chyba dobrze to zobrazował Stroustrup pokazując że jak chce mieć długopis w drugiej ręce nie musi go kopiować, tylko przenieść z ręki do ręki ("nawet dzieci to potrafią").
O taki krótki opis mi właśnie chodziło. Dzięki!

W sumie wstyd, bo trochę w cpp dłubię, a mam spore braki w takich podstawach.
  • Odpowiedz
@Danieru: jeśli chodzi o move semantic to warto znać rys historyczny: pierwotnie C++ wszystko się kopiowało, dopiero póżniej wprowadzoni move semantic. Z tego powodu wygląda to tak pokracznie: żeby zachować stare działania, czyli kopiowanie, a jednocześnie dodać możliwość przenoszenia wprowadzono rvalue reference. Warto zainteresować się rustem, żeby zobaczyć jak to powinno działać: dostępne jest tylko przenoszenie, kopiowanie to po prostu przenoszenie sklonowanej wartości.
  • Odpowiedz
via Android
  • 0
@Saly Dzięki za odp. Na pewno zgłębię temat. W cpp ta kompatybilność wsteczna, że nawet bardzo stary kod ma się kompilować, to jest takie must have. Każdy kij ma dwa końce.
Rust jest chyba dość nowym językiem.
  • Odpowiedz