Czy kod jest w porządku?Czy plik unique_ptr ma wartość nullptr?
unique_ptr<A> p(new A());
p = nullptr;
powinienem używać nullptr z * unique_ptr *? czy to się nie uda?
Próbuję go na g ++, ale co z innymi kompilatorami?
Czy kod jest w porządku?Czy plik unique_ptr ma wartość nullptr?
unique_ptr<A> p(new A());
p = nullptr;
powinienem używać nullptr z * unique_ptr *? czy to się nie uda?
Próbuję go na g ++, ale co z innymi kompilatorami?
Będzie działać.
z pkt 20.7.1.2.3/8-9 o C++ 11 standardowych o szablonie unique_ptr<>
Klasa:
unique_ptr& operator=(nullptr_t) noexcept
;Efekty:
reset()
.Postcondition:
get() == nullptr
Oznacza to, że określenie klasy matrycy unique_ptr<>
zawiera przeciążenie operator =
że przyjmuje wartość typu nullptr_t
(jak nullptr
) w postaci jego prawej strony; paragraf określa również, że przypisanie nullptr
do unique_ptr
jest równoważne resetowaniu unique_ptr
.
Po tym zadaniu, twój obiekt A
zostanie zniszczony.
Rozumiem. BTW, tylko nullptr ma nullptr_t, to tak, jak to się robi, nie jest? – Zhen
@Zhen: Standard nie określa tego. Możesz utworzyć zmienną typu 'nullptr_t', ale wątpię, czy kiedykolwiek będziesz musiał to zrobić. –