Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как-то совсем без внимания остался вопрос о том, не сказывается ли многообёрточность на скорости обработки кода процессором (2011.04.04 21:58)
Если вопрос выглядит некорректным, глупым и т.д. - так и напишите.
Как-то совсем без внимания остался вопрос о том, не сказывается ли многообёрточность на скорости обработки кода процессором (2011.04.04 21:58)
Если вопрос выглядит некорректным, глупым и т.д. - так и напишите.
Вопрос вполне логичный, ответ нет, не сказывается.
Понял! Ну вы меня окрылили! Буду теперь с удвоенным удовольствием штамповать вложенные методы :)
Urain, спасибо за пример! Пока не имеешь опыта программирования, порой трудно догадаться самому провести проверку и написать правильный код для этого. А тут всё наглядно и понятно.
Вопрос. Может ли экземпляр класса-потомка удалить сам себя? Иными словами, будет ли работать такая конструкция:
Компилятор на эту конструкцию не ругается.Вопрос. Может ли экземпляр класса-потомка удалить сам себя? Иными словами, будет ли работать такая конструкция:
Компилятор на эту конструкцию не ругается.Если я правильно все понимаю, не люблю я указатели (и не часто их юзаю, особо в MQL5) то потомок так должен выглядеть
Следовательно применение по идеи будет таким
PS
А не баг ли (или не учтенная особенность компилятора) что компилятор пропустил такое?
Конечно можно предположить что потомок прокатил как требуемый класс, но структуры и функционал двух классов может сильно отличаться. И что тогда?
C_A *pointer=new C_B;
А при вот таком использовании начального кода вообще вылезает утечка памяти, хотя все проверки компилятором были пройдены (и он даже не заикнулся о возможных проблемах)
Результат вот (как я понимаю из-за протечки памяти объект указатель корректно не удален):
Если я правильно все понимаю, не люблю я указатели (и не часто их юзаю, особо в MQL5) то потомок так должен выглядеть
C_A *pointer=new C_B;
то эту идею я подсмотрел из тетриса, и мне она очень оказалась кстати. Разумеется, напропалую использовать эту строчку было бы неправильно, но в целях, схожих с решенными в тетрисе, очень подходит.Как-то совсем без внимания остался вопрос о том, не сказывается ли многообёрточность на скорости обработки кода процессором (2011.04.04 21:58)
Если вопрос выглядит некорректным, глупым и т.д. - так и напишите.
Ответ по логике -- чем проще и логичнее примитивы, тем эффективнее будет работать оптимизатор.
Главное с этим делом не переборщить :)
Чуть модифицировал код скрипта:
Выдаёт
Ну смотрите. Я объявил метод void Del(C_A *p) с модификатором public в родительском классе. Значит, класс-потомок полностью унаследовал этот метод. Поэтому мне не требуется повторно в классе-потомке объявлять этот же метод. Что касается то эту идею я подсмотрел из тетриса, и мне она очень оказалась кстати. Разумеется, напропалую использовать эту строчку было бы неправильно, но в целях, схожих с решенными в тетрисе, очень подходит.
Даже если предположить что void Del(C_A *p) в предке будет достаточно для удаления указателя любого потомка то не вижу смысла использовать
C_A *pointer=new C_B;
PS
Единственное где я могу представить необходимость в таком подходе - Создание массива из разношёрстных объектов которые являются потомками одного класса (как вариант передача в функцию или процедуру параметра с типом "базового" класса).