Kopieren von Klassen mit eindeutigen Zeigern in C 11
Erstellen eines Kopierkonstruktors für eine Klasse, die einen unique_ptr enthält, einen intelligenten Zeiger, der den exklusiven Besitz erzwingt stellt einzigartige Herausforderungen dar. In C 11 erfordert die Verwaltung von unique_ptr-Mitgliedern sorgfältige Überlegungen.
Lösung:
Um einen Kopierkonstruktor zu implementieren, haben Sie zwei Möglichkeiten:
class A { std::unique_ptr<int> up_; public: A(int i) : up_(new int(i)) {} A(const A& a) : up_(new int(*a.up_)) {} };
std::shared_ptr<int> sp = std::make_shared<int>(*up_);
Zusätzlich Überlegungen:
A(A&& a) : up_(std::move(a.up_)) {}
A& operator=(const A& a) { up_.reset(new int(*a.up_)); return *this; } A& operator=(A&& a) { up_ = std::move(a.up_); return *this; }
Das obige ist der detaillierte Inhalt vonWie kopiert man C 11-Klassen, die „unique_ptr'-Mitglieder enthalten, ordnungsgemäß?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!