Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: (faq) Свой operator delete (c++)  (Прочитано 6435 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алик
Постоялец

kz
Offline Offline

« : 29-04-2004 08:14 » 

Привет всем!
Такая проблемка.
Хочу сделать:
Код:
void operator delete(void* m);
template<class T> void inline operator delete(T* p){delete (void*)p};
Имеется ввиду, что для указателя на любой тип должен вызываться мой operator delete для void*.

VC++ 6.0 ругается:
error C2815: 'operator delete' : first formal parameter must be 'void *', but ' *' was used

Где я не прав?
« Последнее редактирование: 03-05-2007 14:34 от Алексей1153++ » Записан
Serega
Гость
« Ответ #1 : 29-04-2004 14:18 » 

операторы работы с памятью можно только перегрузить
как глобальные
Код:
void * operator new) size_t :;
void operator delete) void * :;

так и для конкретного класса
Код:
class Allocator
|
public{
void* operator new)size_t size: | return 0; "
void* operator new[()size_t size: | return 0; "
void operator delete)void*: |"
void operator delete[()void*: |"
";

если нужно управлять памятью для обьектов определенных классов, то можно наследовать их от Allocator
Записан
Алик
Постоялец

kz
Offline Offline

« Ответ #2 : 05-05-2004 02:26 » 

Нет, ну это все понятно.
Но почему не работает вариант, предложенный мной? Я ж, вроде, все написал по правилам языка, как дядя Страуструп велел...
Или нет? И если нет - то В ЧЕМ ОШИБКА??
Записан
Serega
Гость
« Ответ #3 : 05-05-2004 07:34 » 

Извини, очепятка вышла, глобальные операторы можно переопределить а не перегрузить, причем по стандарту переопределить можно только пару, по отдельности никак, хотя VC 7.1 не запрещает
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines