Übergabe gemeinsamer Zeiger: als Referenz oder als Wert
Bei der Übergabe eines shared_ptr (von Boost oder C 11 STL) an eine Funktion wird der Die Wahl zwischen der Übergabe per Konstantenreferenz (void foo(const shared_ptr
Traditionell ist es so Es wurde angenommen, dass die Übergabe per Referenz schneller wäre, da dadurch unnötige Kopiervorgänge vermieden würden. Wie jedoch von Experten bei C and Beyond 2011 (Scott, Andrei und Herb) diskutiert wurde, ist dies nicht mehr der Fall.
Sollten Sie vom Wert oder vom Verweis ausgehen?
Sofern nicht ausdrücklich die Notwendigkeit besteht, den Besitz eines Objekts zu teilen (z. B. zwischen Datenstrukturen oder Threads), gibt es keinen zwingenden Grund, einen shared_ptr als Wert zu übergeben. Die Übergabe per Konstantenreferenz wird aus folgenden Gründen bevorzugt:
Wann sollte ein Wert übergeben werden?
Der einzige Zeitpunkt, zu dem es ratsam ist, einen shared_ptr als Wert zu übergeben, ist wann Ziel ist es, das Eigentum am Objekt auf die Funktion zu übertragen. Dies ist normalerweise der Fall, wenn die Funktion die Verantwortung für die Verwaltung der Lebensdauer des Objekts übernehmen muss.
Zusätzliche Überlegungen
Für eine optimale Leistung ist es wichtig zu berücksichtigen, ob der shared_ptr kann zugoptimiert werden. Wie Scott Meyers erklärt, kann die Bewegungsoptimierung unnötige Kopiervorgänge überflüssig machen. Diese Optimierung ist jedoch nur in bestimmten Versionen von C verfügbar.
Das obige ist der detaillierte Inhalt vonSoll ich „shared_ptr' als Wert oder als Referenz übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!