| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > class constructor |
| Автор: Jcs 21.11.2003, 15:02 |
| Может кто знает, как запустить констуктор вручную? Смысл - использование своего менеджера памяти. Спасибо. |
| Автор: setq 21.11.2003, 15:36 |
| создай экземпляр своего менеджера памяти - конструктор и запустится. |
| Автор: Vyacheslav 21.11.2003, 15:50 | ||
| Использование своего менеджера памяти возможно через перегузку опeратора new. Еще также можно воспользоваться оператором размещения void *operator new(std::size_t size, void *ptr);
|
| Автор: Jcs 22.11.2003, 06:51 |
| Перегрузить, насколько я знаю можно operator new внутри класса, т.е. void* MyClass::operator new(size_t size) но в этом случае MyClass::MyClass() не вызывается, то же саме и с деструкторами - при использовании глобального delete все нормально, все вызывается, но когда переопределяешь кроме перегруженного оператора. Можно,конечно все функции конструктора возложить на перегруженный operator new, но это не есть выход. |
| Автор: Vyacheslav 24.11.2003, 12:19 | ||||||
Во первых, почему ты так уверен, что конструктор не вызывается при перегузке оператора для класса. Оператор new только выделяет память, все остальное выполняет все равно конструктор
Здесь вызовется переопределенный оператор new и конструктор. Во-вторых, никто не мешает перегрузить и просто new в своем пространстве имен. Например так
Ну и последнее и самое простое : вариант оператора с размещением ты почему-то совсем не рассмотрел. Cначала выделяешь память как тебе надо, а затем размещаешь по адресу объект. Еще раз
|