SDS>1. Какие возможные цели преследует декларация operator new(size_t, void*), operator delete(void*, size_t) в классе Obj
я бы разделил это вопрос на две части:
какой эффект от этой декларации? — экземпляры класса можно создавать только на куче или на стеке, а задействовать placement new не получится, чем отсекается всякое баловство навроде явного вызова деструктора с последующим созданием нового объекта на месте старого, а заодно становится невозможным использовать для хранения класса контейнеры, использующие placement new для создания объектов в собственноручно выделенной памяти.
зачем добавлять такие ограничения? — хз, это надо у автора кода спрашивать
В стандарте вроде по поводу этих операторов ничего не менялось, но это надо смотреть. Если уж хочется что-то запрещать, то наверное лучше пометить как = delete.
еще стоит отметить, что автор забил на перегрузку new[] и delete[]
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.