Inny sposób spojrzenia na to: dokładne znaczenie wskaźnika const jest takie, że nie będziesz w stanie dokonać zmian w wskazanym obiekcie, który byłby widoczny przez ten lub inny wskaźnik lub odniesienie do tego samego obiektu. Ale kiedy obiekt ulega zniszczeniu, wszystkie inne wskaźniki na adres poprzednio zajmowany przez teraz usunięty obiekt nie są już wskaźnikami do tego obiektu . Przechowują ten sam adres, ale ten adres nie jest już adresem żadnego obiektu (w rzeczywistości może wkrótce zostać ponownie użyty jako adres innego obiektu).
To rozróżnienie byłoby bardziej oczywiste, gdyby wskaźniki w C ++ zachowywały się jak słabe referencje, tj. Gdy tylko obiekt zostanie zniszczony, wszystkie istniejące wskaźniki do niego zostaną natychmiast ustawione na 0
. (Tego rodzaju rzeczy uważane są za zbyt kosztowne w czasie wykonywania, aby narzucać je wszystkim programom C ++ i w rzeczywistości nie można uczynić ich całkowicie niezawodnymi.)
AKTUALIZACJA : Czytając to dziewięć lat później, jest to prawnicze. Teraz uważam, że twoja pierwotna reakcja jest zrozumiała. Niedopuszczenie do mutacji, ale pozwolenie na zniszczenie, jest oczywiście problematyczne. Implikowana umowa wskaźników / odwołań do stałych jest taka, że ich istnienie będzie działać jak blokada zniszczenia obiektu docelowego, czyli automatyczne usuwanie elementów bezużytecznych.
Zwykłym rozwiązaniem tego problemu jest użycie prawie każdego innego języka.