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_ptran die Funktion übergibst, dann wird ebenjener aufgerufen, und der alsdeleteddefinierte 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.