unique_ptr Funktionsargument



  • TNA schrieb:

    Es war doch genau die Frage, wie man ein Objekt per Value über geben kann, dass nicht kopiert werden kann. Was für einen Sinn macht das?

    Das Verständnis "Pass By Value == Kopie" ist veraltet.

    In C++11 kann Pass By Value den Aufruf eines Move-Konstruktors statt eines Kopierkonstruktors bedeuten. Daher macht es sehr wohl Sinn, nichtkopierbare Objekte als Wert zu übergeben.

    Lies dir vielleicht die Artikelserie auf C++Next durch, da wird Move-Semantik gut erklärt.



  • Es war doch genau die Frage, wie man ein Objekt per Value über geben kann, dass nicht kopiert werden kann.

    In dem man nicht den Kopierkonstruktor involviert, sondern den Move-Konstruktor. Wenn du ein rvalue- unique_ptr an die Funktion übergibst, dann wird ebenjener aufgerufen, und der als deleted definierte Kopierkonstruktor hat nix zu suchen.



  • Das ist alles verdammt kompliziert mit der move Semantik und rvalues. Ich dachte ich hätte das halbwegs verstanden aber es ist doch nicht so 😞 Zumindest waren eure Erklärungen jetzt bei mehrfachen lesen ein bisschen erhellend.



  • Vielleicht hilft dir ja ein älterer Beitrag von mir.


Anmelden zum Antworten