Viele neigen dazu, "C / C ++" zu schreiben, als ob sie dasselbe wären. Obwohl sie viele Gemeinsamkeiten haben, sind sie eindeutig nicht dasselbe.
Aber was sind eigentlich die grundlegenden Unterschiede zwischen C und C ++? Ist C ++ eine erweiterte Version von C oder gibt es Funktionen in C, die in C ++ nicht vorhanden sind?
Antworten:
Die folgenden Punkte beziehen sich auf C ++:
quelle
C ++ wurde erfunden, um die Komplexität zu verwalten, die C nicht bewältigen konnte. Ein häufig auftretendes Problem bei C war beispielsweise, dass Ihnen "die Namen für Variablen ausgehen" (was natürlich nicht wörtlich genommen werden darf), da es keine Kapselung, Namespaces usw. gab.
C hat auch keine Ausnahmen, daher ist die Fehlerbehandlung sehr fehleranfällig, da es vom Bibliotheksbenutzer abhängt, immer die Rückgabewerte von funcs zu überprüfen, während der Bibliotheksentwickler mit Ausnahmen einfach eine Ausnahme auslöst, die garantiert, dass der Programmfluss angehalten wird.
C ++ hilft, indem es den Konstruktor init-Objekte hat, die automatisch vom Compiler aufgerufen werden. Im Gegensatz zu C-Strukturen, die vom Programmierer initialisiert werden müssen (daher ein weiterer fehleranfälliger Bereich).
Schließlich bietet OOP eine Reihe weiterer Vorteile, z. B. die Wiederverwendung von Objekten sowie generische programmierbasierte Konzepte wie Vorlagen und Generika, mit denen Sie Quellcode usw. Wiederverwenden können.
Und viele andere Dinge, die zu viel Zeit in Anspruch nehmen würden, um sie hier aufzulisten.
quelle
Im Allgemeinen wird alles, was in C vorhanden ist, in C ++ unterstützt. Offensichtlich ist das Gegenteil absolut falsch.
Einfach ausgedrückt ist C ++ objektorientiert (zum Beispiel haben Sie Klassen), C dagegen nicht.
C ++ hat einen Booleschen Typ, C89 nicht.
Sie sind verschiedene Sprachen. Sie teilen nur den größten Teil der Syntax.
quelle
_Bool
mitbool
als Alias).long long
Datentyp, der (noch) nicht Teil von ISO C ++ ist.C99 verfügt über einige Funktionen, die in C ++ (zumindest in genau derselben Form) nicht vorhanden sind (z. B. flexible Array-Mitglieder, Arrays variabler Länge usw.).
C99 fügte auch der Bibliothek eine Menge hinzu, die im C ++ 98/03-Standard nicht vorhanden ist. Das meiste davon wurde jedoch zu C ++ 11 hinzugefügt.
Grundsätzlich unterstützt C die strukturierte prozedurale Programmierung. C ++ unterstützt dies ebenso wie objektorientiertes Programmieren, generisches Programmieren und Metaprogrammieren (Ausführen einer beliebigen Berechnung zur Kompilierungszeit). Mit C ++ 11 werden einige Elemente hinzugefügt, die zumindest für die Unterstützung der funktionalen Programmierung gehalten werden könnten (z. B. Lambda-Ausdrücke). C ++ 14 hat ein paar mehr hinzugefügt, aber die meisten von ihnen sind wirklich komfortabler als jede größere Änderung der Ausrichtung.
quelle
Persönlich denke ich, dass Vorlagen das wichtigste Merkmal sind, das C ++ zu C hinzufügt.
quelle
#define GENERATE_INTERFACE(T) T T##_func(T x);
; (Typ) sicheres Überladen / Templates in C. Ich stimme Thomas zu, dass Destruktoren ein weitaus wichtigeres Merkmal sind, das in C fehlt. Destruktoren verbergen jedoch häufig wichtigen Code. Namespaces (Scope) sind meiner Meinung nach die wichtigsten.