„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich exklusive Zeiger als Funktions- oder Konstruktorparameter in C ++ übergeben?

Wie kann ich exklusive Zeiger als Funktions- oder Konstruktorparameter in C ++ übergeben?

Gepostet am 2025-05-06
Durchsuche:144

How Should I Pass Unique Pointers as Function or Constructor Arguments in C  ?

von Wert bestehen:

base (std :: Unique_ptr n) : Weiter (std :: move (n)) {}

Diese Methode überträgt das Eigentum des eindeutigen Zeigers auf die Funktion/Objekt. Der Inhalt des Zeigers wird in die Funktion verschoben, so dass der ursprüngliche Zeiger nach der Operation leer bleibt. : Weiter (std :: move (n)) {}

erlaubt der Funktion, sowohl zugreifen als auch das Eigentum des einzigartigen Zeigers zu beanspruchen. Dieses Verhalten ist jedoch nicht garantiert und erfordert die Inspektion der Funktion der Funktion, um den Umgang mit dem Zeiger zu bestimmen. Der Zeiger kann zugegriffen werden, aber nicht gespeichert oder geändert werden.
Base(std::unique_ptr n)
  : next(std::move(n)) {}

an r-value-Referenz:

base (std :: eindeutig_ptr && n) : Next (std :: move (n)) {}

vergleichbar mit der Übergabe von nicht konstantem L-Wert Referenz, erfordert jedoch die Verwendung von std :: move, wenn nicht-zeitgenössische Argumente bestanden werden. Eigentümer kann von der Funktion beansprucht oder nicht behauptet werden, was sie weniger vorhersehbar macht.
Base(std::unique_ptr n)
  : next(std::move(n)) {}

Empfehlungen:

passieren nach Wert:
Base(std::unique_ptr const &n);

Betrachten Sie alternative Ansätze:

vermeiden Sie es, an R-Wert zu bestehen, da sie Unsicherheit über das Eigentum einführt. Das Kopieren eines einzigartigen Zeigers ist nicht erlaubt: std :: Unique_ptr newptr (std :: move (oldptr));

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3