Подібності між C і C++ є:
- Обидві мови мають схожий синтаксис.
- Структура коду обох мов однакова.
- Компіляція обох мов подібна.
- Вони мають однаковий базовий синтаксис. Майже всі оператори та ключові слова C також присутні в C++ і виконують те ж саме.
- C++ має трохи розширену граматику, ніж C, але основна граматика та сама.
- Базова модель пам'яті обох дуже близька до апаратної.
- В обох мовах присутні однакові поняття стека, купи, області видимості файлу та статичних змінних.
Відмінності між C і C++ є:
C++ часто розглядають як надмножину C. C++ також відомий як C з класом. Це було майже правдою, коли C++ було створено, але ці дві мови з часом еволюціонували, коли C отримав ряд функцій, які були t знайдено в сучасній версії C++ або досі не потрапило в жодну версію C++. Тим не менш, C++ все ще є переважно надмножиною додавання C Об'єктно-орієнтоване програмування , Обробка винятків , створення шаблонів і більш розширена стандартна бібліотека.
Нижче наведено таблицю деяких більш очевидних і загальних відмінностей між C і C++. Існує ще багато тонких відмінностей між мовами та версіями мов.
C | C++ |
---|---|
C був розроблений Деннісом Річі між 1969 і 1973 роками в AT&T Bell Labs. | C++ був розроблений Б'ярне Страуструпом у 1979 році. |
C не підтримує поліморфізм, інкапсуляцію та успадкування, що означає, що C не підтримує об’єктно-орієнтоване програмування. | C++ підтримує поліморфізм , інкапсуляція , і успадкування оскільки це об'єктно-орієнтована мова програмування. |
C є (переважно) підмножиною C++. | C++ є (здебільшого) надмножиною C. |
Число ключові слова в C: * C90: 32 * C99: 37 * C11: 44 * C23: 59 | Число ключові слова в C++: * C++98: 63 * C++11: 73 * C++17: 73 * C++20: 81 |
Для розробки коду підтримує C процедурне програмування . | C++ відома як гібридна мова, оскільки C++ підтримує обидва процедурний і парадигми об'єктно-орієнтованого програмування . |
Дані та функції розділені в C, оскільки це процедурна мова програмування. | Дані та функції інкапсульовані разом у формі об’єкта в C++. |
C не підтримує приховування інформації. | Інкапсуляція приховує дані, щоб гарантувати, що структури даних і оператори використовуються за призначенням. |
У C підтримуються вбудовані типи даних. | У C++ підтримуються вбудовані та визначені користувачем типи даних. |
C є функціонально керованою мовою, оскільки C є процедурною мовою програмування. | C++ є об’єктно-керованою мовою, оскільки це об’єктно-орієнтоване програмування. |
Перевантаження функцій і операторів не підтримується в C. | Перевантаження функцій і операторів підтримується C++. |
C є функціонально керованою мовою. | C++ є об'єктно-керованою мовою |
Функції в C не визначені всередині структур. | Функції можна використовувати всередині структури в C++. |
Функції простору імен відсутні в C. | Простір імен використовується C++, що дозволяє уникнути зіткнень імен. |
Стандартний заголовок IO stdio.h . | Стандартний заголовок IO iostream.h . |
Посилальні змінні не підтримуються C. | Посилальні змінні підтримуються C++. |
Віртуальні функції та функції друзів не підтримуються C. | віртуальний і функції друга підтримуються C++. |
C не підтримує успадкування. | C++ підтримує успадкування. |
Замість того, щоб зосереджуватися на даних, C зосереджується на методі чи процесі. | C++ зосереджується на даних, а не на методі чи процедурі. |
C забезпечує malloc() і calloc() функції для динамічний розподіл пам'яті , і безкоштовно() для звільнення пам'яті. | C++ забезпечує новий оператор для розподілу пам'яті та оператор видалення для звільнення пам'яті. |
Пряма підтримка обробки винятків не підтримується C. | Обробка винятків підтримується C++. |
scanf() і функції printf() використовуються для введення/виведення в C. | cin і cout використовуються для введення/виведення в C++ . |
Структури C не мають модифікаторів доступу. | Структури C++ мають модифікатори доступу. |
У мові програмування C немає суворої перевірки типу. | Сувора перевірка типу виконується на C++. Дуже багато програм, які добре працюють у компіляторі C, призведуть до багатьох попереджень і помилок у компіляторі C++. |
C не підтримує перевантаження | C++ підтримує перевантаження |
Дозволяється каламбур типу з об’єднаннями (C99 і новіші) | Каламбур типу з об’єднаннями – це невизначена поведінка (за винятком дуже особливих обставин) |
Іменовані ініціалізатори можуть відображатися не в порядку | Іменовані ініціалізатори повинні відповідати структурі даних структури |
Розширення файлу .c | Розширення файлу: .cpp або .c++ або .cc або .cxx |
Метапрограмування: макроси + _Generic() | Метапрограмування: шаблони (макроси все ще підтримуються, але не рекомендується) |
У C є 32 ключові слова | У C++ є 97 ключових слів |