Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Техническая ссылка. Пример "механизма оборачивания" при работе с классами (чтоб не искать поиском):
https://www.mql5.com/ru/forum/3555/page3#comment_57315
Вопрос. Оператор new. В Справочнике сказано, что new - это оператор; при этом в примерах зачастую после использования данного оператора делается проверка на равенство константе NULL. Например:
Также говорится, что "NULL можно сравнивать с указателями на объекты, созданные при помощи оператора new".
Получается, что оператор new не всегда создаёт новый объект? Или же проверка на равенство NULL'ю созданного объекта - это особенность стиля того или иного программиста, и не является обязательной?
Вопрос. Оператор new. В Справочнике сказано, что new - это оператор; при этом в примерах зачастую после использования данного оператора делается проверка на равенство константе NULL. Например:
Также говорится, что "NULL можно сравнивать с указателями на объекты, созданные при помощи оператора new".
Получается, что оператор new не всегда создаёт новый объект? Или же проверка на равенство NULL'ю созданного объекта - это особенность стиля того или иного программиста, и не является обязательной?
Если вы в одном месте программы создаёте динамичный объект то логично что в другом месте вы будете его уничтожать, и не факт что это всё находится в пределах одной функции, отсюда простое правило перед использованием указателя проверьте а есть ли он.
Это правильно. Но в примерах из Справочника проверка осуществляется сразу после создания объекта, т.е. в одном месте программы и в пределах одной функции. И приведённое правило здесь не совсем в точку. Зачем осуществлять проверку сразу после создания объекта? Получается, что оператор new не всегда создаёт новый объект? =(повторяюсь)=
Вот ещё один пример из многих:
Это правильно. Но в примерах из Справочника проверка осуществляется сразу после создания объекта, т.е. в одном месте программы и в пределах одной функции. И приведённое правило здесь не применимо. Зачем осуществлять проверку сразу после создания объекта? Получается, что оператор new не всегда создаёт новый объект (повторяюсь)?
Вот ещё один пример из многих:
Есть такая вероятность. В справке первый абзац.
ОК. Получается, что у оператора поведение - как у функции. Может создать, а может и не создать.
Например, не хватило памяти под объект.
Вопрос. Можно ли после объявления в родительском классе виртуальной функции с определённым набором параметров и их типов изменять в классах-потомках количество и типы параметров у соответствующих виртуальных функций?
С одной стороны, в Справочнике говорится, что "виртуальная функция может замещаться в производном классе. Выбор того, какое определение функции вызвать для виртуальной функции, происходит динамически (на этапе выполнения). Типичный случай – когда базовый класс содержит, а производные классы имеют свои версии этой функции". С другой стороны, приведённые в Справочнике примеры касаются случаев, когда у виртуальных функций различаются тела определения функций, а не заголовки определения функций.
Вопрос. Можно ли после объявления в родительском классе виртуальной функции с определённым набором параметров и их типов изменять в классах-потомках количество и типы параметров у соответствующих виртуальных функций?