Код С зазвичай є дійсним кодом С ++.
Основні проблеми з C ++ - це неправильне його використання ( Лінус Торвальдс ненавидить його з цієї причини ; у нього також були деякі інші проблеми з переносністю бібліотек і так далі. Придбати він працює на рівні операційних систем, і він повинен мати можливість виконувати всі випадки чіп там).
Наприклад, майже немає переваги використовувати масив cstyle [] над c ++ std :: vector <> (або подібним контейнером).
Вектори є безпечними для типу і їх можна перевірити за межею (ви можете отримати доступ до елементів, використовуючи get () або [], навіть якщо ви не використовуєте перевірений масив, ви все одно можете запитувати розмір, а не обробляти його вказівником).
Але вектори можуть бути повільнішими, якщо, наприклад, ви не оголосите розмір за замовчуванням у конструкторі. Крім того, додавання речей до вектора може спричинити уповільнення, якщо воно потребує зміни розміру. C ++ 11 також додає багато переваг, таких як рівномірна ініціалізація (тепер ви можете оголошувати та ініціалізувати вектори за допомогою одного і того ж синтаксису), і є конструктори переміщення, які дозволять вам уникнути копіювання. Ви навіть можете зробити власні власні ініціалізатори (якщо ви хочете зробити щось інше, ніж використовувати malloc з якихось причин).
Або, звичайно, якщо вам потрібно змінити розмір речей, тоді з векторами все ще простіше це зробити, вам не доведеться возитися з malloc, копіювати речі вручну тощо.
C ++ дає вам об'єктно-орієнтований код. Коли буде складено, це буде настільки ж ефективно, оскільки це справді просто абстракція для людей, які працюють з кодом. Хоча такі речі, як конструктори, можуть уповільнити створення об'єктів. Але вам буде потрібен або конструктор для встановлення значень за замовчуванням, або в іншому випадку ви можете ініціалізувати об'єкти, не використовуючи конструктор (відмовивши від ()).
Але орієнтація на об’єкти значно спрощує ігри з програмуванням . Ігри часто мають справу з предметами.