Kluczowa różnica: C i C ++ to dwa różne języki programowania komputerowego. C ++ został opracowany z języka programowania C; jednak mają one zupełnie inny charakter. Najbardziej oczywistą różnicą jest to, że C jest językiem opartym na procedurze, podczas gdy C ++ obsługuje zarówno programowanie proceduralne, jak i obiektowe, dlatego jest często nazywany językiem hybrydowym.
C jest jednym z najstarszych obecnie używanych języków programowania i jest jednym z najczęściej używanych języków programowania. Jest ciągle używany w aplikacjach, które wcześniej były kodowane w języku asemblerowym. Obejmuje to system operacyjny komputera UNIX. C ma również bezpośredni lub pośredni wpływ na wiele późniejszych języków programowania, takich jak C #, D, Go, Java, JavaScript, Limbo, LPC, Perl, PHP, Python i C powłoki Unix. Pomimo tych wszystkich nowych języków C nadal pozostaje popularnym językiem programowania.
C ++ początkowo było rozwinięciem C. Zostało zaprojektowane tak, aby było kompatybilne ze źródłem i łączem z C. Dodało jednak klasy, funkcje wirtualne, przeciążenie operatorów, wielokrotne dziedziczenie, szablony, obsługę wyjątków itp. W końcu opracowało wystarczająco, aby można go było uznać za język programowania. Pierwotnie został ratyfikowany w 1998 roku jako język programowania z certyfikatem ISO / IEC 14882: 1998. Dzisiaj C ++ jest obecnie powszechnie używane do projektowania sprzętu.
C jest językiem programowania ogólnego przeznaczenia, który używa średnika (;) jako terminatora instrukcji, a także nawiasów klamrowych ({}) do grupowania bloków instrukcji. Posiada funkcje programowania strukturalnego, a jego konstrukcja zapewnia konstrukcje, które mogą efektywnie odwzorowywać typowe instrukcje maszynowe. Pozwala także na leksykalny zakres zmienny i rekurencję oraz ma system typu statycznego, który zapobiega wielu niezamierzonym operacjom.
Jednak w porównaniu z C ++, C ma wiele ograniczeń. Ponieważ C nie jest zorientowany obiektowo, nie obsługuje koncepcji OOPS. C nie obsługuje przeciążania funkcji i operatora. Nie może korzystać z funkcji wewnątrz struktur. Nie obsługuje funkcji wirtualnych i zmiennych referencyjnych ani obsługi wyjątków. Nie obsługuje również zmiennych referencyjnych. Ponadto C również nie hermetyzuje ani nie zabezpiecza danych. Dla porównania C ++ obsługuje wszystkie te funkcje.
Oba języki różnią się także sposobem działania pamięci adresowej, wprowadzaniem danych wejściowych i programowaniem GUI. Na przykład C używa funkcji calloc (), malloc () i free () do alokacji i de alokacji pamięci, podczas gdy C ++ wykorzystuje nowe i usuwa. C używa scanf () i printf () dla wejścia i wyjścia, podczas gdy C ++ używa operatorów cin >> i cout <<. C obsługuje narzędzie GTK do programowania GUI, natomiast C ++ obsługuje narzędzia Qt do programowania GUI. Kolejną różnicą jest to, że C wymaga od użytkownika zadeklarowania wszystkich zmiennych u góry programu, podczas gdy w C ++ zmienne mogą być zadeklarowane w dowolnym miejscu w programie.
Dodatkowo, C ++ jest zwykle uważany za łatwiejszy do nauczenia, ponieważ jest bardziej przyjazny dla użytkownika niż C. C ++ ma również wiele dodatkowych funkcji, które ułatwiają kodowanie, szczególnie dla kogoś, kto jest nowy w strukturze C. Jednak wielu twierdzi, że ma to znaczenie. Te dwa języki różnią się tak bardzo, że w rzeczywistości mogą być dwoma różnymi językami niezależnymi od siebie. Jedną z rzeczy, o których należy pamiętać, jest to, że C jest znacznie bardziej uporządkowany niż C ++, podczas gdy C ++ ma być bardziej ekspresyjny i abstrakcyjny niż C.
Porównanie między C i C ++:
do | C ++ | |
Założony | Opracowany przez Dennisa Ritchiego w AT & T Bell Labs w latach 1969-1973. | Opracowany przez Bjarne Stroustrup w Bell Labs od 1979 roku. |
Kod źródłowy | Kod źródłowy programu w wolnym formacie | Pierwotnie opracowany z języka programowania C. |
Język | Procedura Język zorientowany | Wspiera zarówno paradygmaty programowania proceduralnego, jak i obiektowego; dlatego jest często nazywany językiem hybrydowym. |
Podejście | Podąża za podejściem od góry do dołu. | Podejście oddolne. |
Związek | C jest podzbiorem C ++. Nie może uruchomić kodu C ++. | C ++ jest nadzbiorem C. C ++ może uruchomić większość kodu C, podczas gdy C nie może uruchomić kodu C ++. |
Napęd | Język funkcyjny | Obiektowy język |
Skupiać | Skupia się na metodzie lub procesie, a nie na danych. | Skupia się na danych zamiast na metodzie lub procedurze. |
Cegiełki | Funkcje | Obiekty |
Słowa kluczowe | Zawiera 32 słowa kluczowe | Zawiera 52 słowa kluczowe |
Koncepcje OOPS | Ponieważ język "C" jest językiem zorientowanym na procedury, nie obsługuje on koncepcji OOPS, takich jak klasa, obiekt, dziedziczenie, polimorfizm, ukrywanie danych itp. | Jako język zorientowany obiektowo, C ++ obsługuje klasę, obiekt, ukrywanie danych, polimorfizm, dziedziczenie, abstrakcje itp. |
Funkcje |
|
|
Funkcje pamięci | Używa funkcji calloc (), malloc () i free () do alokowania i de alokacji pamięci. | Używa operatorów nowych i usuwa w tym samym celu. |
Kapsułkowanie | Nie wspiera. Dane i funkcje są osobnymi i wolnymi podmiotami. | Obsługuje enkapsulację. Dane i funkcje są enkapsulowane razem w postaci obiektu. Klasa obiektów zapewnia projekt struktury obiektu. |
Ukrywanie informacji | C nie obsługuje ukrywania informacji. Tutaj dane są wolnymi jednostkami i mogą być manipulowane przez zewnętrzny kod. | Enkapsulacja ukrywa dane, aby zapewnić, że struktury danych i operatory są używane zgodnie z przeznaczeniem. |
Dane | Obsługuje wbudowane i prymitywne typy danych. Dane nie są zabezpieczone z powodu braku obiektu | Obsługuje typy danych wbudowanych i definiowanych przez użytkownika. Dane są zabezpieczone (ukryte) w C ++ |
Poziom | Język niskiego poziomu | Język średniego poziomu |
Wejście wyjście | Język "C" używa scanf () i printf () dla wejścia i wyjścia. | Język "C ++" używa operatorów cin >> i cout << dla wejścia i wyjścia. |
Deklaracja zmiennych | C wymaga deklaracji wszystkich zmiennych u góry programu. | W C ++ zmienne mogą być zadeklarowane w dowolnym miejscu w programie przed użyciem. |
Wielokrotna deklaracja | Dozwolone jest wiele deklaracji zmiennych globalnych. | Wielokrotne Deklaracja zmiennych globalnych jest niedozwolona. |
Mapowanie | Mapowanie danych i funkcji jest trudne i skomplikowane. | Odwzorowanie między danymi a funkcją może być używane za pomocą "obiektów" |
Programowanie GUI | C obsługuje narzędzie GTK do programowania GUI | C ++ obsługuje narzędzia Qt do programowania GUI |
Dziedzictwo | Dziedziczenie nie jest możliwe w C | Dziedziczenie jest możliwe w C ++ |
Rozszerzenie pliku | Ma rozszerzenie pliku .c | Ma rozszerzenie pliku .cpp |
Domyślny plik nagłówkowy | Domyślnym plikiem nagłówkowym używanym w języku C jest stdio.h | Domyślny plik nagłówkowy używany w C ++ to iosteam.h |
Niektóre przykłady różnicy między C i C ++:
Przykłady | do | C ++ |
Deklaracja zmiennej | Tylko u góry: int i; dla (i = 10; i <10; i ++) | Gdziekolwiek w programie: dla (int i = 10; i <10; i ++) |
Przydzielanie pamięci | Malloc: int * x = malloc (sizeof (int)); int * x_array = malloc (sizeof (int) * 10); | Nowy: int * x = nowy int; int * x_array = new int [10]; |
Zwalnianie pamięci | Darmowy: bezpłatny (x); wolny (x_array); | Kasować: usuń x; usuń [] x_array; |