#include <iostream>
#include <memory>
using namespace std;
int main() {
std::unique_ptr<int> ptrA = std::make_unique<int>(10);
ptrA = std::make_unique<int>(20); // case I
return 0;
}
#include <iostream>
#include <memory>
using namespace std;
int main() {
std::unique_ptr<int> ptrA = std::make_unique<int>(10);
ptrA = nullptr; // case II or ptrA.reset()
ptrA = std::make_unique<int>(20);
return 0;
}
Ich habe viele Leute gesehen Case II
verwenden. Allerdings ist std::unique_ptr
ein intelligenter Zeiger, ich denke nicht, dass wir entweder nullptr
zuweisen oder reset
anrufen sollten, bevor wir ihm einen neuen Wert zuweisen.sollte `nullptr` zu` std :: unique_ptr` zuweisen, bevor ihm ein neuer Wert zugewiesen wird?
Bitte korrigieren Sie mich, wenn ich hier falsch liege.
Warum sind Sie die Zuordnung std :: make_unique (10) ptrA, dann eine Zeile später std :: make_unique (20) wenn du einfach * ptrA = 20 - oder noch kürzer machen kannst: mach einfach ptrA = std :: make_unique (20) und fertig damit? Oder geben Sie der Frage etwas mehr Kontext? –
stijn
@stijn, weil dieser Code nur die Idee, nicht den echten Code erklärt. – Slava
@stijn, wenn man bedenkt, dass wir einen Zuweisungsoperator schreiben, ist einer der Mitglieder unique_ptr. – q0987