Готовимся к отрицательным голосам.
Должен ли он : Нет.
С технической точки зрения : Да
Является ли этохорошая идея : Абсолютно нет.
Есть ли ситуация, в которой это полезно? : Конечно.Если вы C ++, foo чрезвычайно силен.Но большинство людей не так хороши.Так что делайте это только в том случае, если у вас есть команда людей, которые могут провести достойный анализ кода.
Почему :
У объекта нет возможности узнать, что он имеетбыл динамически распределен (и, следовательно, нуждается в удалении) или является нормальным объектом (и, следовательно, не должен быть удален), и, таким образом, как он может решить, должен ли он быть удален.Таким образом, если объект удаляется сам, то, по моему мнению, в дизайне есть что-то ужасно неправильное.
Если у вас есть объект, который требует управления, вы должны написать отдельный объект для управления (отсюда умные указатели),Позвольте объекту делать то, что у него хорошо получается, затем разделите управление объектом на другой объект.