Copy-Konstruktor für die Klasse shared_ptr Daten Mitglieder?

Weiß ich, wie schreiben Sie einen kopierkonstruktor, wenn Sie raw-pointer Daten-member in einer Klasse, aber wie schreiben Sie einen kopierkonstruktor, wenn Sie diese handhaben mit einem shared_ptr?

Gibt es eine copy() oder clone() Funktion, die aufgerufen werden sollen? Interessanterweise habe ich noch nie gesehen so ein Beispiel.

  • Kurze Antwort: können Sie nicht. Der Punkt, der eine std::shared_ptr<Obj> ist Ihre gemeinsame. Der default-copy-ctor wird die Verwaltung der Verweiszählung für Sie, wenn Sie die shared pointer Mitglied kopiert. Wenn Sie nicht wollen, um einen shared pointer auf eine Obj, dann verwenden Sie nicht eine std::shared_ptr<Obj>. Verwenden Sie eine Obj. (Oder vielleicht ich missverstanden Ihre Frage/Anliegen).
  • Wie @WhozCraig sagt, es ist die automatische. Es sei denn, Sie benötigen eine Art von spezialisierten kopieren Logik für Ihre eigene Klasse, der compiler-generierte default-copy-Konstruktor und Zuweisungsoperatoren arbeiten sollte.
  • aber was, wenn Sie wollte, um eine Tiefe Kopie. Die Mitglieder des Objekts freigegebenen Zeiger müssen auch geklont werden, die in der Klasse der copy-Konstruktor.
InformationsquelleAutor user997112 | 2014-09-08
Schreibe einen Kommentar