![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Jcs |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Может кто знает, как запустить констуктор вручную? Смысл - использование своего менеджера памяти. Спасибо.
|
|||
|
||||
setq |
|
|||
Unregistered |
создай экземпляр своего менеджера памяти - конструктор и запустится.
|
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Использование своего менеджера памяти возможно через перегузку опeратора new. Еще также можно воспользоваться оператором размещения
void *operator new(std::size_t size, void *ptr);
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Jcs |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Перегрузить, насколько я знаю можно operator new внутри класса, т.е.
void* MyClass::operator new(size_t size) но в этом случае MyClass::MyClass() не вызывается, то же саме и с деструкторами - при использовании глобального delete все нормально, все вызывается, но когда переопределяешь кроме перегруженного оператора. Можно,конечно все функции конструктора возложить на перегруженный operator new, но это не есть выход. |
|||
|
||||
Vyacheslav |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Во первых, почему ты так уверен, что конструктор не вызывается при перегузке оператора для класса. Оператор new только выделяет память, все остальное выполняет все равно конструктор
Здесь вызовется переопределенный оператор new и конструктор. Во-вторых, никто не мешает перегрузить и просто new в своем пространстве имен. Например так
Ну и последнее и самое простое : вариант оператора с размещением ты почему-то совсем не рассмотрел. Cначала выделяешь память как тебе надо, а затем размещаешь по адресу объект. Еще раз
-------------------- С уважением, Вячеслав Ермолаев |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |