2016-12-17 1 views
1

Ich weiß, 2 Möglichkeiten:Nichtbezug Shared_ptr

// Declared somewhere but not on stack 
shared_ptr<X> xptr = make_shared<X>(); 

xptr = nullptr; //#1 
xptr.reset(); //#2 

Was ich # 1 sieht besser aus, aber was ist besser, von dem Punkt der C++

Antwort

1

Weder objektiv besser ist. In fast allen Fällen ist der Unterschied rein ästhetisch.

Die einzige Ausnahme, die ich denken kann, ist das Schreiben einer generischen Funktionsvorlage, die sowohl mit intelligenten als auch mit bloßen Zeigern funktioniert. Nur ist gültige Syntax für leere Zeiger.

Die Zuweisungs- und Zurücksetzelementfunktionen unterscheiden sich nur im Verhalten, wenn der Zeiger nicht null ist.