Правила программирования на С и С++. Главы 7-8 - Локальные перегрузки операторов new и delete опасны

ОГЛАВЛЕНИЕ

 

154. Локальные перегрузки операторов new и delete опасны.

Здесь основной проблемой является то, что операторы new и delete, определенные в виде членов класса, следуют другим правилам, чем перегруженные на глобальном уровне. Локальная перегрузка используется лишь тогда, когда вы размещаете единственный объект. Глобальная перегрузка используется вами всегда при размещении массива. Следовательно, этот код скорее всего не будет работать:

some_class *p = new some_class[1]; // вызывает глобальный оператор new() //...delete p; // вызывает some_class::operator delete()

Помните, что эти две строки могут быть в различных файлах.