Une autre façon de voir les choses: la signification précise d'un pointeur const est que vous ne pourrez pas modifier l'objet pointé qui serait visible via ce pointeur ou tout autre pointeur ou référence au même objet. Mais lorsqu'un objet est détruit, tous les autres pointeurs vers l'adresse précédemment occupée par l'objet maintenant supprimé ne sont plus des pointeurs vers cet objet . Ils stockent la même adresse, mais cette adresse n'est plus l'adresse d'aucun objet (en fait elle pourra bientôt être réutilisée comme adresse d'un objet différent).
Cette distinction serait plus évidente si les pointeurs en C ++ se comportaient comme des références faibles, c'est-à-dire que dès que l'objet est détruit, tous les pointeurs existants vers lui seraient immédiatement positionnés sur 0
. (C'est le genre de chose considérée comme trop coûteuse à l'exécution pour l'imposer à tous les programmes C ++, et en fait, il est impossible de la rendre entièrement fiable.)
MISE À JOUR : En lisant cela neuf ans plus tard, c'est avocat-ish. Je trouve maintenant votre réaction initiale compréhensible. Interdire la mutation mais permettre la destruction est clairement problématique. Le contrat implicite des pointeurs / références const est que leur existence agira comme un blocage lors de la destruction de l'objet cible, c'est-à-dire le garbage collection automatique.
La solution habituelle à cela est d'utiliser presque n'importe quelle autre langue à la place.