logo

Różnica między C i C++

Podobieństwa między C I C++ Czy:

  • Obydwa języki mają podobną składnię.
  • Struktura kodu obu języków jest taka sama.
  • Kompilacja obu języków jest podobna.
  • Mają tę samą podstawową składnię. Prawie wszystkie operatory i słowa kluczowe języka C są również obecne w C++ i robią to samo.
  • C++ ma nieco rozszerzoną gramatykę niż C, ale podstawowa gramatyka jest taka sama.
  • Podstawowy model pamięci obu modeli jest bardzo zbliżony do sprzętowego.
  • Te same pojęcia stosu, sterty, zakresu pliku i zmiennych statycznych są obecne w obu językach.



Różnice pomiędzy C I C++ Czy:
C++ jest często postrzegany jako nadzbiór C. C++ jest również znany jako C z klasą. Było to prawie prawdą, kiedy pierwotnie tworzono C++, ale te dwa języki ewoluowały z biegiem czasu, a C przejął wiele funkcji, których albo nie było nie znaleziono we współczesnej wersji C++ lub nadal nie udało się go znaleźć w żadnej wersji C++. To powiedziawszy, C++ nadal jest głównie nadzbiorem dodawania C Programowanie obiektowe , Obsługa wyjątków , Szablony i bardziej rozbudowaną bibliotekę standardową.

Poniżej znajduje się tabela przedstawiająca niektóre z bardziej oczywistych i ogólnych różnic między C i C++. Istnieje wiele bardziej subtelnych różnic pomiędzy językami i pomiędzy wersjami języków.

C C++
C został opracowany przez Dennisa Ritchiego w latach 1969–1973 w AT&T Bell Labs. C++ został opracowany przez Bjarne’a Stroustrupa w 1979 roku.
C nie obsługuje polimorfizmu, enkapsulacji i dziedziczenia, co oznacza, że ​​C nie obsługuje programowania obiektowego. Obsługuje C++ wielopostaciowość , kapsułkowanie , I dziedzictwo ponieważ jest to obiektowy język programowania.
C jest (głównie) podzbiorem C++. C++ jest (przeważnie) nadzbiorem C.
Liczba słowa kluczowe w C:
* C90: 32
* C99: 37
*C11: 44
*C23: 59
Liczba słowa kluczowe w C++:
*C++98: 63
*C++11: 73
*C++17: 73
*C++20: 81
Do tworzenia kodu C obsługuje programowanie proceduralne . C++ jest znany jako język hybrydowy, ponieważ C++ obsługuje oba proceduralny I Paradygmaty programowania obiektowego .
Dane i funkcje są oddzielone w C, ponieważ jest to proceduralny język programowania. Dane i funkcje są hermetyzowane razem w formie obiektu w C++.
C nie obsługuje ukrywania informacji. Dane są ukrywane przez enkapsulację, aby zapewnić, że struktury danych i operatory są używane zgodnie z przeznaczeniem.
Wbudowane typy danych są obsługiwane w języku C. Wbudowane i zdefiniowane przez użytkownika typy danych są obsługiwane w języku C++.
C jest językiem sterowanym funkcjami, ponieważ C jest językiem programowania proceduralnego. C++ jest językiem obiektowym, ponieważ jest programowaniem obiektowym.
Przeciążanie funkcji i operatorów nie jest obsługiwane w języku C. Przeciążanie funkcji i operatorów jest obsługiwane przez C++.
C jest językiem opartym na funkcjach. C++ jest językiem obiektowym
Funkcje w C nie są zdefiniowane wewnątrz struktur. Funkcji można używać wewnątrz struktury w języku C++.
Funkcje przestrzeni nazw nie są obecne w C. Przestrzeń nazw jest używany w języku C++, co pozwala uniknąć kolizji nazw.
Standardowy nagłówek IO to stdio.h . Standardowy nagłówek IO to iostream.h .
Zmienne referencyjne nie są obsługiwane przez C. Zmienne referencyjne są obsługiwane przez C++.
Funkcje wirtualne i przyjacielskie nie są obsługiwane przez C. Wirtualny I funkcje przyjaciela są obsługiwane przez C++.
C nie obsługuje dziedziczenia. C++ obsługuje dziedziczenie.
Zamiast skupiać się na danych, C koncentruje się na metodzie lub procesie. C++ koncentruje się na danych, zamiast skupiać się na metodzie lub procedurze.
C zapewnia malloc() I kaloc() funkcje dla dynamiczna alokacja pamięci , I bezpłatny() do dealokacji pamięci. C++ zapewnia nowego operatora do alokacji pamięci i usuń operatora do dealokacji pamięci.
Bezpośrednie wsparcie dla obsługi wyjątków nie jest obsługiwane przez C. Obsługa wyjątków jest obsługiwany przez C++.
skanf() i funkcje printf() służą do wejścia/wyjścia w C. cin i cout służą do wejście/wyjście w C++ .
Struktury C nie mają modyfikatorów dostępu. Struktury C++ mają modyfikatory dostępu.
W języku programowania C nie ma ścisłego sprawdzania typów. Ścisłe sprawdzanie typów odbywa się w C++. Tak wiele programów, które działają dobrze w kompilatorze C, spowoduje wiele ostrzeżeń i błędów w kompilatorze C++.
C nie obsługuje przeciążania C++ obsługuje przeciążenie
Dopuszczalne jest wpisywanie typu za pomocą złączy (C99 i nowsze) Typ karania ze związkami jest zachowaniem niezdefiniowanym (z wyjątkiem bardzo specyficznych okoliczności)
Nazwane inicjatory mogą być wyświetlane w nieprawidłowej kolejności Nazwane inicjatory muszą pasować do układu danych struktury
Rozszerzenie pliku to .c Rozszerzenie pliku to .cpp, .c++, .cc lub .cxx
Metaprogramowanie: makra + _Generic() Metaprogramowanie: szablony (makra są nadal obsługiwane, ale odradzane)
W C są 32 słowa kluczowe W C++ jest 97 słów kluczowych