По поводу надежности ПО. Exception handling = must have - страница 5

 
simpleton :


В деструкторе ~A() "надобъекта" 'B' уже "нет", однако из деструктора ~A() вызывается B::f().


Спасибо за сообщение, исправлено. Ждите обновлений.


в MQL5 все деструкторы виртуальны (внесём это в справку).

ЗЫ никто не запрещает конечно (пока), но вызывать виртуальные методы в деструкторе/конструкторе чревато....

 
Renat :

Как я вижу, Вам нравятся игры в теоретические формулировки.


У нас написано все верно и достаточно полно. Если не хватает одной книги, то нужно идти и читать еще еще 10 книг, чтобы получить обзорное представление, а не пытаться требовать от одной книги раскрытия всех точек зрения. Для раскрытия темы к услугам сотни книг по С/C++ языкам в каждом книжном магазине.


Сергей Ковелев уже пишет книгу по языку MQL5 и я думаю, что такие вопросы он раскроет полнее специально для новичков, для которых MQL5 будет первым языком программирования.


Предлагаю закрыть тему обсуждения теоретических вопросов - работа ждет.


Почему игры, да ещё и теоретические? Я заметил ошибку в документации и сообщил. Книга ещё не скоро появится, да это и не повод, чтобы оставлять ляпы в документации.

Но решение принимать не мне, - останется не на моей совести.


Когда появится полностью рабочий this, и заработают forward декларации, появится возможность пообкатывать MQL5 на более сложных примерах.


Хорошо, что работа ждёт, - к концу весны, надеюсь, MT5 дорастёт до уровня beta-версии, можно будет начинать потихоньку переходить на новую платформу.

Лишь бы программистам потом сил хватило довести платформу по качеству до release'а, а не остановиться посередине между beta'ой и release'ом.


А чемпионат 2010, если будет, то, по моим ощущениям, логичен был бы в двух номинациях, - MT4 и MT5, потому что на подготовку экспертов для MT5, похоже, будет слишком мало времени.

Automated Trading Championship 2010
  • championship.mql5.com
Automated Trading Championship 2010
 
mql5 :


Спасибо за сообщение, исправлено. Ждите обновлений.


в MQL5 все деструкторы виртуальны (внесём это в справку).

ЗЫ никто не запрещает конечно (пока), но вызывать виртуальные методы в деструкторе/конструкторе чревато....


Чревато, если поверхностно разбираться в том, как устроен и работает полиморфизм, особенно при создании/уничтожении объектов.

Но раз уж MQL5 в себя его включает, - люди будут им пользоваться, в том числе будут пытаться им пользоваться и из конструктора.


На самом деле пример сначала был сложнее. Ведь не считается предосудительным вызвать из конструктора невиртуальный метод?

Но, если этот невиртуальный, в свою очередь, вывзывает виртуальный - ситуация ничуть не лучше.


В C++ таким образом организуется честный и настоящий pure virtual function call.

Однако, языку MQL5 это на данном этапе не грозит, - в нём нет чистых виртуальных функций.


Кстати, 227 build неадекватно реагирует на объявление деструктора виртуальным, если в классе также присутствует виртуальная функция:


class A { public:  virtual ~A() { } virtual void f(void) { } };


При попытке компиляции возникает ошибка "EX5 write error" с указанием Line: 1, Column: 1

Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Виртуальные функции
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Виртуальные функции
  • www.mql5.com
Основы языка / Объектно-ориентированное программирование / Виртуальные функции - Документация по MQL5
 
simpleton :


Почему игры, да ещё и теоретические? Я заметил ошибку в документации и сообщил. Книга ещё не скоро появится, да это и не повод, чтобы оставлять ляпы в документации.

Ошибки никакой нет.
 
simpleton :


При попытке компиляции возникает ошибка "EX5 write error" с указанием Line: 1, Column: 1


Это уже поправлено, ждите обновления.
Причина обращения: