Heim > Backend-Entwicklung > C++ > Soll ich gemeinsame Zeiger als Referenz oder als Wert übergeben?

Soll ich gemeinsame Zeiger als Referenz oder als Wert übergeben?

Patricia Arquette
Freigeben: 2024-10-30 19:50:02
Original
649 Leute haben es durchsucht

Should I Pass Shared Pointers by Reference or by Value?

Übergabe gemeinsam genutzter Zeiger: als Referenz oder als Wert

Beim Aufrufen einer Funktion, die einen gemeinsam genutzten Zeiger akzeptiert, stehen Entwickler vor der Wahl zwischen der Übergabe const-Referenz oder nach Wert. Auch wenn die Übergabe per Konstantenverweis aus Leistungsgründen vorzuziehen erscheint, bedarf die Entscheidung weiterer Überlegungen.

Laut Experten der „Ask Us Anything“-Sitzung 2011 C and Beyond bietet die Übergabe eines gemeinsamen Zeigers im Allgemeinen keinen Vorteil nach Wert. Die Übergabe per Const-Referenz ist der empfohlene Ansatz, es sei denn, die Absicht besteht darin, den Besitz des Objekts zu teilen.

Warum die Übergabe per Const-Referenz?

Die Übergabe per Const-Referenz stellt sicher, dass das Der gemeinsam genutzte Zeiger bleibt innerhalb der Funktion unveränderlich, behält seinen Wert und verhindert unbeabsichtigte Änderungen. Dies steht im Einklang mit dem beabsichtigten Verhalten eines gemeinsamen Zeigers, der den gemeinsamen Besitz eines Objekts symbolisiert.

Warum nicht Wert übergeben?

Während die Wertübergabe zu einem Durch die Kopie des gemeinsam genutzten Zeigers optimieren moderne C-Compiler die unnötige Duplizierung des zugrunde liegenden verwalteten Objekts. Die Wertübergabe ist nur dann von Vorteil, wenn der gemeinsam genutzte Zeiger verschiebungsoptimiert werden kann, sodass der Besitz des verwalteten Objekts ohne Kopieren auf die Funktion übertragen werden kann. Diese Optimierung hängt jedoch von der jeweils verwendeten C-Version ab.

Zusätzliche Überlegungen

Das GoingNative-Panel „Ask Us Anything“ von 2012 ging näher auf dieses Thema ein. Zu den wichtigsten Erkenntnissen aus der Diskussion gehören:

  • Die Übergabe per Konstantenreferenz ermöglicht die Möglichkeit, einen gemeinsamen Zeiger innerhalb der Funktion zurückzugeben.
  • Die Übergabe per Konstantenreferenz macht deutlich, dass die Funktion übernimmt nicht den Besitz des Objekts, was die Klarheit des Codes fördert.
  • In Fällen, in denen der Besitz übertragen werden muss, gibt die Übergabe als Wert oder die Verwendung von std::move() explizit an, dass der Besitz übernommen werden soll.

Das obige ist der detaillierte Inhalt vonSoll ich gemeinsame Zeiger als Referenz oder als Wert übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage