Код C обычно является допустимым кодом C ++.
Основные проблемы с C ++ - это неправильное использование ( Линус Торвальдс ненавидит его по этой причине , у него также были некоторые другие проблемы с переносимостью библиотек и т. Д. Он работает на уровне операционных систем и должен иметь возможность запускать программы на любой случайности). чип там).
Например, использование cstyle array [] почти не дает преимущества над c ++ std :: vector <> (или аналогичным контейнером).
Векторы являются безопасными с точки зрения типов и могут быть проверены с помощью границ (вы можете получить доступ к элементам, используя get () или [], даже если вы не используете метод массива с проверкой, вы все равно можете запросить размер, вместо того, чтобы перемещать его с помощью указателя).
Но векторы могут быть медленнее, если, например, вы не объявляете размер по умолчанию в конструкторе. Кроме того, добавление элементов в вектор может вызвать замедление, если затем потребуется изменение размера. C ++ 11 также добавляет много преимуществ, таких как равномерная инициализация (теперь вы можете объявлять и инициализировать векторы, используя один и тот же синтаксис), и есть конструкторы перемещения, которые могут позволить вам избежать копирования. Вы даже можете создавать свои собственные инициализаторы (если по какой-то причине вы хотели сделать что-то кроме использования malloc).
Или, конечно, если вам нужно изменить размер, то с векторами все еще проще это сделать, вам не нужно возиться с malloc, вручную копировать объекты и так далее.
C ++ дает вам объектно-ориентированный код. При компиляции это будет столь же эффективно, поскольку это просто абстракция для людей, работающих с кодом. Хотя такие вещи, как конструкторы, могут замедлять создание объектов. Но вам либо понадобится конструктор для установки значений по умолчанию, либо вы можете инициализировать объекты, не используя конструктор (исключая ()).
Но объектная ориентация делает программирование игр намного проще. Игры часто имеют дело с объектами.