Wiele osób pisze „C / C ++”, jakby to było to samo. Chociaż mają wiele podobieństw, najwyraźniej nie są takie same.
Ale jakie są naprawdę podstawowe różnice między C i C ++? Czy C ++ jest ulepszoną wersją C, czy też są funkcje w C, które nie istnieją w C ++?
Odpowiedzi:
Następujące punkty dotyczą C ++:
źródło
C ++ został opracowany w celu zarządzania złożonością, z którą C nie mógł sobie poradzić. Na przykład częstym problemem w C było to, że można „zabraknąć nazw zmiennych” (nie należy tego rozumieć dosłownie), ponieważ nie było enkapsulacji, przestrzeni nazw itp.
Ponadto C nie ma wyjątków, dlatego obsługa błędów jest bardzo podatna na błędy, ponieważ to od użytkownika biblioteki zależy zawsze sprawdzanie zwracanych wartości func, podczas gdy z wyjątkami, twórca biblioteki po prostu zgłasza wyjątek, który gwarantuje, że przepływ programu zostanie zatrzymany.
C ++ pomaga, mając obiekty inicjujące konstruktora, które są automatycznie wywoływane przez kompilator. W przeciwieństwie do struktur C, które muszą zostać zainicjowane przez programistę (stąd inny obszar podatny na błędy).
Wreszcie, OOP ma wiele innych zalet, takich jak ponowne wykorzystanie obiektów, a także ogólne koncepcje oparte na programowaniu, takie jak szablony i ogólne, które pozwalają na ponowne użycie kodu źródłowego itp.
I wiele innych rzeczy, których wymienienie zajęłoby zbyt wiele czasu.
źródło
Ogólnie wszystko, co istnieje w C, jest obsługiwane w C ++. Oczywiście odwrotność jest absolutnie fałszywa.
Mówiąc wprost, C ++ jest zorientowany obiektowo (więc na przykład masz klasy), C nie.
C ++ ma typ boolowski, którego nie ma C89.
Są to różne języki. Po prostu dzielą większość składni.
źródło
_Bool
, zebool
jako alias).long long
typ danych, który nie jest (jeszcze) częścią ISO C ++.C99 ma kilka funkcji, które nie istnieją (przynajmniej w dokładnie takiej samej formie) w C ++ (np. Elastyczne elementy tablicy, tablice o zmiennej długości itp.)
C99 dodał również wiele do biblioteki, która nie jest obecna w standardzie C ++ 98/03; większość z nich została jednak dodana do C ++ 11.
W zakresie podstawowej orientacji C zasadniczo wspiera ustrukturyzowane programowanie proceduralne. C ++ obsługuje zarówno programowanie obiektowe, programowanie ogólne, jak i metaprogramowanie (przeprowadzanie dowolnych obliczeń w czasie kompilacji). W C ++ 11 dodaje kilka bitów i elementów, które można przynajmniej pomylić z funkcjonalnym wsparciem programowania (np. Wyrażenia lambda). C ++ 14 dodał jeszcze kilka, ale większość z nich jest naprawdę wygodniejsza niż jakakolwiek poważna zmiana orientacji.
źródło
Osobiście uważam, że szablony są najważniejszą funkcją, którą C ++ dodaje do C.
źródło
#define GENERATE_INTERFACE(T) T T##_func(T x);
; (typ) bezpieczne przeciążenie / szablony w C. Zgadzam się z Thomasem, że destruktory są znacznie ważniejszą funkcją, której brakuje C. Ale destruktory często ukrywają ważny kod. Przestrzenie nazw (zakres) są moim zdaniem najważniejsze.