„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-06-14
Durchsuche:470

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

Managing Unique Pointers as Parameters in Constructors and Functions

Unique pointers (unique_ptr) uphold the principle of unique ownership in C 11. When dealing with unique pointers as function or constructor arguments, several options arise with distinct Implikationen.

von Wert bestehen:

Base(std::unique_ptr n)
  : next(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.

an r-value-Referenz:
Base(std::unique_ptr &n)
  : next(std::move(n)) {}

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.

Empfehlungen:
Base(std::unique_ptr &n)
  : next(std::move(n)) {}

passieren nach Wert: für Funktionen, die den Besitz des einzigartigen Ziffers beanspruchen. Wenn die Funktion einen vorübergehenden Zugriff auf den Zeiger braucht.

Base(std::unique_ptr &&n)
  : next(std::move(n)) {}
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