![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
есть вопрос
почему в 1 требуется конструктор A()?, ведь оператор-то перегружен или конструктор по-любому необходим для перегрузки operator new и еще
печатает: operator new() A() почему конструктор вызывается неявно, какой тогда смысл в перегрузке new? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
MAKCim
Конструктор не вызваться не может, это же закон. Смысл перегрузки - это контроль за выделением памяти и возможность запустить всякий служебный код, на стандартное поведение с вызовом конструктора ты повлиять не можешь, хоть перегружай для каждого класса, хоть глобально. |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
как я могу контролировать память? допустим
судя по примеру 2 сначала вызовется operator new(), и что я могу здесь контролировать при отсутствии объекта? если я в operator new() буду выделять память для A каким-то особым способом, то это, возможно, приведет к утечке памяти если конструктор захватывает какой-нибудь ресурс. -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| Daevaorn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
В твоем пример контроль заключается в том, что ты её не выделяешь и просто печатаешь информацию
Вот выделили память и вывели информацию. Может пригодится для отладки. На таком принципе основано написание своего менеджера памяти. Не преведет. Это ни как не зависит. |
||||
|
|||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Так в этом случае нужно и operator delete() перегружать. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| dronzo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 26.11.2005 Где: Москва Репутация: 1 Всего: 8 |
MAKCim, посмотри здесь :
http://groups.google.ru/group/alt.comp.lan...51cc7f948e67bea http://groups.google.ru/group/comp.lang.c+...8fb52f8800fb65b Лучше и точнее вряд ли скажешь, имхо. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |