Angesichts der allgemeinen Situation, in der die Lebensdauer eines eigenen Objekts mit seinem Besitzer verknüpft ist, kann ich einen eindeutigen Zeiger auf zwei Arten verwenden. .Sollte ich ein unique_ptr zuweisen oder zurücksetzen?
kann es zugeordnet werden:
class owner
{
std::unique_ptr<someObject> owned;
public:
owner()
{
owned=std::unique_ptr<someObject>(new someObject());
}
};
Das Reset-Verfahren verwendet werden kann: Im Interesse der Best-Practice-
class owner
{
std::unique_ptr<someObject> owned;
public:
owner()
{
owned.reset(new someObject());
}
};
, soll ich lieber eine Form über die andere?
EDIT: Sorry Leute. Ich habe das vereinfacht. Die Heap-Zuweisung erfolgt in einer Initialisierungsmethode und nicht im Ctor. Daher kann ich Initialisiererlisten nicht verwenden.
Ich weiß, es ist spät, aber nur für zukünftige Leser. Laut Scott Meyers in seinem Buch Effective Modern C++ ist std :: make_unique vorzuziehen, weil es eine Ausnahmesicherheit bietet: owner = std :: make_unique (). Das Problem ist, dass std :: make_unique Teil von C++ 14 ist (nicht C++ 11), aber hier finden Sie [hier] (https://isocpp.org/files/papers/N3656.txt) a gute Implementierung, die Sie kopieren und einfügen können. –