Po prostu uczę się STL i reverse_iterator
ma mnie mylić. Ma domyślny konstruktor, ale nie rozumiem, jak go używać. Próbowałem:Dlaczego reverse_iterator ma domyślny konstruktor?
reverse_iterator<int*> r{};
r --;
i program się zawiesił. Uważam, że nie ma sensu tego użycia i może łatwo spowodować awarię, więc dlaczego domyślny konstruktor może być używany?
Prawdopodobnie tylko po to, aby potwierdzić, że "niezainicjowane" iteratory mają później przypisaną konkretną wartość. Po prostu traktuj konstrukcje domyślne jako zmienne niezainicjowane, tj. Nie rób z nimi nic, dopóki nie przydzielisz znaczącej wartości. – AnT
Dlaczego można zdefiniować wskaźnik wskazujący na 'nullptr', a następnie usunąć go? Jest wiele rzeczy, które są dozwolone, a które są bardzo niebezpieczne, nawet niezdefiniowane. To właśnie nadaje C++ szybkość i status strzelania sobie w nogę. –
@RickAstley Wierzę, że standardowa biblioteka C++ przeniosła się z mentalności "strzelaj do woli", "nie strzelisz do nóg, jeśli nic nie kosztuje". Musiałby istnieć jeszcze jeden powód, gdyby coś niebezpiecznego było dozwolone –