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 |