| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > operator new() |
| Автор: MAKCim 28.1.2006, 10:05 | ||||
есть вопрос
почему в 1 требуется конструктор A()?, ведь оператор-то перегружен или конструктор по-любому необходим для перегрузки operator new и еще
печатает: operator new() A() почему конструктор вызывается неявно, какой тогда смысл в перегрузке new? |
| Автор: Daevaorn 28.1.2006, 10:35 |
| MAKCim Конструктор не вызваться не может, это же закон. Смысл перегрузки - это контроль за выделением памяти и возможность запустить всякий служебный код, на стандартное поведение с вызовом конструктора ты повлиять не можешь, хоть перегружай для каждого класса, хоть глобально. |
| Автор: MAKCim 28.1.2006, 11:05 | ||||
как я могу контролировать память? допустим
судя по примеру 2 сначала вызовется operator new(), и что я могу здесь контролировать при отсутствии объекта? если я в operator new() буду выделять память для A каким-то особым способом, то это, возможно, приведет к утечке памяти если конструктор захватывает какой-нибудь ресурс. |
| Автор: Void 28.1.2006, 11:22 | ||
Так в этом случае нужно и operator delete() перегружать. |
| Автор: dronzo 28.1.2006, 13:11 |
| MAKCim, посмотри здесь : http://groups.google.ru/group/alt.comp.lang.learn.c-c++/msg/d51cc7f948e67bea http://groups.google.ru/group/comp.lang.c++.moderated/msg/88fb52f8800fb65b Лучше и точнее вряд ли скажешь, имхо. |