Umsetzung der Move-Konstruktor durch den Aufruf Move-Zuweisungs-Operator

Dem MSDN-Artikel, Gewusst wie: Schreiben Sie einen Umzug Constuctor, hat die folgende Empfehlung.

Wenn Sie beide einen move-Konstruktor und move-Zuweisungs-operator für die Klasse, die Sie beseitigen können, um redundanten code schreiben
der move-Konstruktor-Aufruf der move-Zuweisungs-operator. Die
folgende Beispiel zeigt eine überarbeitete version des move-Konstruktor,
ruft der move-Zuweisungs-operator:

//Move constructor.
MemoryBlock(MemoryBlock&& other)
   : _data(NULL)
   , _length(0)
{
   *this = std::move(other);
}

Ist dieser code ineffizient, indem Sie doppelt initialisieren MemoryBlock's-Werte oder wird der compiler in der Lage sein, zu optimieren, entfernt die zusätzlichen Initialisierungen? Sollte ich immer schreiben, mein Umzug Konstruktoren durch den Aufruf der move-Zuweisungs-operator?

InformationsquelleAutor Elliot Hatch | 2013-06-14
Schreibe einen Kommentar