// Destructor. If there is a C object, delete it.
// We don't need to test ptr_ == NULL because C++ does that for us
~scoped_ptr() {
enum { type_must_be_complete = sizeof(C) };
delete ptr_;
}
Uwaga: C jest parametrem szablonuCo to jest wyliczenie w destruktorze?
wiem, nie możemy usunąć pustego wskaźnika wyjątek zostanie podniesiona. Tak więc w tym przypadku definicja wyliczeniowa musi być czymś, aby temu zapobiec. W produkcji czasami nie chcemy zakończyć programu prostym, ponieważ mamy wskaźnik zerowy, możemy chcieć spojrzeć na alternatywny scenariusz, gdy wskaźnik jest pusty. A ten kod jest używany w produkcji, prawie wszędzie?
Dzięki chłopaki.
Możemy usunąć wskaźnik zerowy, który jest do tego prawidłowy. –
Myślę, że mój problem był mylony z podwójnym usunięciem wskaźników. Zawsze podnosi wyjątek, gdy kompilator wykryje podwójne usunięcie. Jaka jest więc różnica między usunięciem wskaźnika zerowego a podwójnym usunięciem? – maress
@maress: możesz "usunąć" wskaźnik zerowy tyle razy ile chcesz (lub w rzeczywistości możesz spróbować go usunąć, środowisko wykonawcze wykryje wskaźnik zerowy i nie zrobi nic) – rjnilsson