Первый тип -- delete для удаления одного объекта. Он вызывает деструктор объекта (если существует) и освобождает память, выделенную под объект.
Второй тип -- delete[] для удаления динамического массива объектов. Он последовательно вызывает деструкторы для каждого элемента массива и затем освобождает блок памяти, выделенный под массив.
Пример:
cpp