Інший спосіб подивитися на це: точне значення покажчика const полягає в тому, що ви не зможете вносити зміни до об’єкта, на який спрямовано, який буде видно через той чи інший вказівник або посилання на той самий об’єкт. Але коли об’єкт руйнується, всі інші вказівники на адресу, раніше зайняту видаленим об’єктом , більше не є вказівниками на цей об’єкт . Вони зберігають одну і ту ж адресу, але ця адреса вже не є адресою будь-якого об'єкта (насправді вона може незабаром бути повторно використана як адреса іншого об'єкта).
Це розрізнення було б більш очевидним, якби вказівники в C ++ поводились як слабкі посилання, тобто як тільки об'єкт буде знищений, для всіх наявних покажчиків на нього відразу буде встановлено значення 0
. (Це те, що вважається занадто дорогим під час виконання, щоб накласти на всі програми C ++, і насправді неможливо зробити його цілком надійним.)
ОНОВЛЕННЯ : Читаючи це назад через дев'ять років, це по-адвокатськи. Зараз я вважаю вашу оригінальну реакцію зрозумілою. Заборонити мутацію, але дозволити знищення, очевидно, проблематично. Мається на увазі договір const покажчиків / посилань на те, що їх існування буде діяти як блок знищення цільового об'єкта, він же автоматичний збір сміття.
Звичайним рішенням цього є використання замість нього майже будь-якої іншої мови.