Итак, какой C ++ ВЫ используете в своей практике?Вы смешиваете стили, скажем, массивы и векторы?Есть ли здесь какие-либо правила или лучшие практики? ...
Современный C ++, определенно.Но, по моему мнению, это не исключает массивов.Есть еще случаи, когда массивы предпочтительнее векторов.Но когда я использую массивы, я использую их в стиле STL.Я использую указатели в качестве итераторов, и я применяю алгоритмы STL к содержимому массива и т. Д.
Кстати, сам Бьярн Страуструп был процитирован для описания C ++ очень похожим на то, что описывал сам:
В C ++ существует гораздо меньший и более чистый язык, изо всех сил пытающийся выбраться
Конечно, существуют ограничения.С современным C ++ время компиляции, как правило, страдает.И это требует гораздо более продвинутых компиляторов, что на некоторых платформах делает его бездействующим.И многие более консервативные ведущие разработчики или руководители проектов, или просто древние базы кода, иногда означают, что это тоже не вариант.И есть определенная кривая обучения, потому что все подводные камни C все еще существуют, вам просто нужно научиться обходить их (например, утечки памяти не просто vanish , современный C ++ просто определяет некоторыеочень мощные шаблоны, чтобы их избежать).
Но я думаю, что современный C ++ действительно можно считать красивым языком.И это определенно не то, как вы бы описали традиционный стиль C ++ с классами.
Когда я работаю на (других) языках высокого уровня, я обнаружил, что почти всегда есть что-то, из чего я скучаюC ++.Либо в языке отсутствуют надежные и безопасные с точки зрения типов контейнеры, либо выразительные итераторы / алгоритмы, либо в нем отсутствует поддержка RAII, либо нет способа выразить универсальные алгоритмы, как вы можете с помощью шаблонов.
Эти языки определенноимеют свои преимущества тоже, и есть неоспоримо области, где они просто лучше, чем C ++.Но я также обычно нахожу, что у них есть явные недостатки, когда я просто не могу выразить свои идеи так же, как я могу в C ++.Мне нужно прыгать через обручи, жертвовать безопасностью типов, полагаться на рефлексию или что-то еще, просто чтобы сделать что-то, что C ++ поддерживал бы «естественно».