logo

Різниця між C і C++

Подібності між 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 ключових слів