Zunächst einmal, da es verschiedene Arten von Smartpointern gibt, möchte ich diese Frage auf zwei von ihnen konzentrieren: Referenz zählte aufdringliche und nicht intrusive Smartpointer. Die Frage wird individuell für jeden Zeigertyp gestellt.Intelligente Zeiger. Wann, wo und wie?
Ich bin nicht wirklich sicher, wie ich meine Frage formulieren soll, also hier ist, was ich nicht frage: Ich frage nicht, warum, oder wann, sind intelligente Zeiger benötigt. Weder welche Art von Smart Pointer sollte ich verwenden und für was.
Hier ist, was ich fragen, und ich hoffe, es ist klar genug: Beim Umgang mit "intelligent verwalteten" Objekten, in welchem Kontext sollte ich welche Pointer-Semantik verwenden? Das heißt, Smart-Pointer-Semantik, RAW-Pointer-Semantik, etwas anderes (z. B. ein Verweis auf einen Smart-Pointer)?
Es ist offensichtlich, dass, wenn ich einen Zeiger auf ein Objekt "speichern" (Objekt ist eine Referenz gezählt Speicherelement), wie ein globaler Zeiger oder als ein Klassenmitglied, sollte es ein intelligenter Zeiger sein, so würde es Anspruch auf Eigentumsrechte erheben, aber was ist mit anderen Situationen?
Wenn ich einen Zeiger als Funktionsargument übergebe, sollte es ein Smart-Pointer, ein roher Pointer, ein Verweis auf einen Smart Pointer oder etwas anderes sein? Was ist mit zurückgegebenen Zeigern? Lokale Zeiger? so weiter ...
Natürlich könnte ich intelligente Zeiger überall verwenden, was die sicherste Option ist, aber ich fühle, dass dies wirklich unnötig ist und zusätzlichen Aufwand verursacht.
Gefühle sind in der Regel falsch passieren, Objekte als nicht-const Referenzen und ändern. Messe Es. –