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


 

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

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

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

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

 
« Предыдущая статья   Следующая статья »