Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Какая разница, где будет выполнена инициализация данных. Что в конструкторе, что в отдельной функции, времени потребуется столько же.
Разница в наличии или отсутствии конструктора.
Алгебраические типы данных являются контейнерными типами, и имеют конструктор.
В моём понимании типизации Си, конструктор это лишнее звено в выполнении кода.
Любое лишнее звено, не есть гуд в скорости исполнения.
Скромное имхо ))
Они весьма удобны для работы с древесными структурами "на лету", но за это приходится платить скоростью исполнения. Если в Rust достигается некий компромисс, то это было бы неплохо.
Разница в наличии или отсутствии конструктора.
Пустой конструктор в С++ может быть удален компилятором, потому что можно не вызывать функцию которая ничего не делает, а ООП в бинарном файле нет. Но как точно у Вас происходит впрочем я не знаю. Что касается моего имхо, то инициализация значений по умолчанию крайне важная штука. Иначе это порождает трудноотлавливаемые ошибки, вроде мусора в переменных, который интерпретируется как вилидное значение. В этом случае вызов даже пустого конструктора необходим. Пожертвовать ради этого парой микросекунд вполне можно.
Пустой конструктор в С++ может быть удален компилятором, потому что можно не вызывать функцию которая ничего не делает, а ООП в бинарном файле нет. Но как точно у Вас происходит впрочем я не знаю. Что касается моего имхо, то инициализация значений по умолчанию крайне важная штука. Иначе это порождает трудноотлавливаемые ошибки, вроде мусора в переменных, который интерпретируется как вилидное значение. В этом случае вызов даже пустого конструктора необходим. Пожертвовать ради этого парой микросекунд вполне можно.
В том то и дело, что в алгебраическом типе конструктор не удаляется.
Он всегда есть, в этом и разница.
По поводу обязательной инициализации, соглашусь.
Но лучше я сам буду контролировать этот момент, чем использовать скрытый конструктор.
Кто нить скажет с чего алгебраические типы стали контейнерами?
вики
https://ru.wikipedia.org/wiki/Алгебраический_тип_данных
В том то и дело, что в алгебраическом типе конструктор не удаляется.
Он всегда есть, в этом и разница.
По поводу обязательной инициализации, соглашусь.
Но лучше я сам буду контролировать этот момент, чем использовать скрытый конструктор.
Ну да, ну да. А Си самый быстрый, ну кроме ассемблера конечно...
Есть куча кода, в котором нужно проверить инициализированную переменную, типа: if(i == 0) а еще лучше if(i == default(int))Init(). Когда нет инициализации по-умолчанию, нет умолчального значения. Следовательно, если есть переменная, которая что-то содержит, то реально не существует достоверного способа понять, была она проинициализирована кем-то, или ее значение является мусором. Если мы не в конструкторе, а где-то в методе, и нужна ленивая инициализация по требованию, то дальше начинается игра в "верю не верю в стандартные умолчания и острую память разраба", зато две микросекунды сэкономили, красота!
вики
https://ru.wikipedia.org/wiki/Алгебраический_тип_данных
Приветствую.
Как сейчас обстоят дела с API MT5 для библиотек пользователей?
Не было ли изменения в лучшую сторону, за более чем 10 лет?
Вопрос возник, так как в 2020 году существуют не только MQL с внешними C++/.Net/Python.
Конечно, хотелось бы совсем избавиться от такой прослойки, как MQL.
Сейчас вроде нативные mql сокеты научились смотреть наружу. Большего и не надо для этих целей.
Ну да, ну да. А Си самый быстрый, ну кроме ассемблера конечно...
Есть куча кода, в котором нужно проверить инициализированную переменную, типа: if(i == 0) а еще лучше if(i == default(int))Init(). Когда нет инициализации по-умолчанию, нет умолчального значения. Следовательно, если есть переменная, которая что-то содержит, то реально не существует достоверного способа понять, была она проинициализирована кем-то, или ее значение является мусором. Если мы не в конструкторе, а где-то в методе, и нужна ленивая инициализация по требованию, то дальше начинается игра в "верю не верю в стандартные умолчания и острую память разраба", зато две микросекунды сэкономили, красота!
Разница кто какую базу изучал.
У Си программистов инициализация переменной, как отче наш. Помнит всегда.
И он не парится лишними проверками, а инициализирована ли переменная?
Она у него всегда инициализирована на начальном этапе её объявления.
В больших проектах на тормозах кода, из микросекунд набираются миллисекунды, и возможно даже секунды, а это уже критические моменты.