| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Не правильно работает перегрузка new. |
| Автор: Chaos A.D. 14.5.2005, 13:08 | ||||
У меня несколько классов. Ну, скажем, абстрактный Foo в файле Foo.h; Bar и Banana, наследующие гомоморфный интерфейс у Foo. Они лежат в Foo.cpp. Их создает производящая функция. Также есть мой пул памяти. Примерный инрефейс можно обрисовать так:
Если перегрузить оператор new в базовом Foo к примеру таким образом:
при выполнении кода, похожего на этот: new(my_mega_pool) Banana; вызывается сразу оба оператора. Почему? Проблему я устранил, убрав перегрузку из моего аналога классу Foo, и инкапсулировав ее в файле Foo.cpp, перегрузив эти операторы у нового класса RealFoo. Тоже абстрактного. В свою очередь, Bar и Banana теперь наследовали у меня RealFoo. Таким образом все заработало как надо. Но почему нельзя было перегрузить эти операторы у Foo? |
| Автор: Guest 19.5.2005, 07:42 |
| Ну дак как? Никто не поможет? |
| Автор: chaos 20.5.2005, 06:58 | ||||||
PS и вообще советую почитать книгу http://anatolix.naumen.ru/Books/CPlusPlus?v=fvi Jeff Alger (Джефф Элджер) C++ for Real programmers (C++ Библиотека программиста) Эта книга заслуживает внимания всех программистов С++!!! |
| Автор: Chaos A.D. 20.5.2005, 19:48 |
| Может я очень непонятливый, но по моему это не совсем то, о чем я спрашивал. У меня вроде итак перегружен оператор new только в одном классе. И его действие распрастраняется на все остальные производные классы. Ну а так как класс Foo у меня абстрактный, для него оператор new никогда не вызывается. Только для RealFoo. А книгу ту я читал. Тоже присоединяюсь к твоему жирному совету. Книга действительно не плохая. |
| Автор: chaos 21.5.2005, 08:21 |
| дай тогда кода побольше, посмотреть хоть че там у тебя |