Wpis z mikrobloga

#cpp #naukaprogramowania

czy byłaby to poprawna implementacja konstruktora przenoszącego w LinkedList? można tak p----------ć this i fajrant?

LinkedList(LinkedList &&other)
{
std::cout << "3" << std::endl;

clear();

*this = std::move(other);
}
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@0d27c4e9064f628adbc99e547a23306e: Tak o ile zdefiniujesz poprawny operator przenoszenia (move assigment). Zazwyczaj to domyślny operator przenoszenia korzysta z konstruktora przenoszącego.
Ale generalnie jest bardzo głupie, po za tym nie inicjalizujesz pól a wywołujesz clear(); co prawdopodobnie jest błędem.
Jezeli natomiast korzystasz z std::unique_ptr to one są zawsze poprawnie zainicjalizowane, a i domyśny move constructor zrobi to co będziesz chciał.
  • Odpowiedz