Suche…


Einführung

1998 wurde der Standard erstmals veröffentlicht, wodurch C ++ eine intern standardisierte Sprache wurde. Seitdem hat sich C ++ entwickelt, was zu unterschiedlichen Dialekten von C ++ führte. Auf dieser Seite finden Sie eine Übersicht aller verschiedenen Standards und deren Änderungen gegenüber der Vorgängerversion. Die Details zur Verwendung dieser Funktionen werden auf spezielleren Seiten beschrieben.

Bemerkungen

Wenn C ++ erwähnt wird, wird häufig auf "den Standard" verwiesen. Aber was ist genau dieser Standard?

C ++ hat eine lange Geschichte. Begonnen als kleines Projekt von Bjarne Stroustrup in den Bell Labs, war es Anfang der 90er Jahre sehr beliebt. Mehrere Unternehmen erstellten C ++ - Compiler, sodass Benutzer ihre C ++ - Compiler auf einer Vielzahl von Computern ausführen können. Um dies zu erleichtern, sollten alle konkurrierenden Compiler eine einzige Definition der Sprache haben.

Zu diesem Zeitpunkt war die C-Sprache erfolgreich standardisiert worden. Dies bedeutet, dass eine formale Beschreibung der Sprache verfasst wurde. Dies wurde dem American National Standards Institute (ANSI) vorgelegt, das das Dokument zur Überprüfung öffnete und 1989 veröffentlichte. Ein Jahr später die International Organization for Standards (Da es verschiedene Akronyme in verschiedenen Sprachen hätte, wählten sie eine Form , ISO, abgeleitet von den griechischen isos (gleichwertig), übernahm den amerikanischen Standard als internationalen Standard.

Für C ++ war von Anfang an klar, dass ein internationales Interesse besteht. Eine Arbeitsgruppe innerhalb der ISO wurde gegründet (bekannt als WG21, innerhalb des Unterausschusses 22). Diese Arbeitsgruppe entwarf um 1995 einen ersten Standard. Aber wie wir Programmierer wissen, ist nichts für eine geplante Bereitstellung gefährlicher als die Last-Minute-Funktionen, und das geschah auch bei C ++. 1995 erschien eine coole neue Bibliothek mit dem Namen STL, und die in WG21 tätigen Personen beschlossen, den C ++ - Entwurfsstandard um eine abgespeckte Version zu erweitern. Natürlich wurden dadurch die Fristen nicht eingehalten und nur drei Jahre später wurde das Dokument endgültig. ISO ist eine sehr formale Organisation, daher wurde der C ++ - Standard mit dem nicht sehr marktfähigen Namen ISO / IEC 14882 getauft. Da Standards aktualisiert werden können, wurde diese genaue Version als 14882: 1998 bekannt.

Und in der Tat bestand die Forderung, den Standard zu aktualisieren. Der Standard ist ein sehr umfangreiches Dokument, das genau beschreibt, wie C ++ - Compiler arbeiten sollen. Selbst eine geringfügige Unklarheit kann es wert sein, korrigiert zu werden. Daher wurde bis 2003 ein Update unter der Nummer 14882: 2003 veröffentlicht. Dies fügte jedoch kein Feature zu C ++ hinzu; Die neuen Funktionen waren für das zweite Update geplant.

Informell wurde dieses zweite Update als C ++ 0x bezeichnet, da nicht bekannt war, ob dies bis 2008 oder 2009 dauern würde. Nun, diese Version wurde ebenfalls etwas verzögert, weshalb sie 14882: 2011 wurde.

Glücklicherweise entschied sich die WG21, dies nicht noch einmal passieren zu lassen. C ++ 11 wurde gut angenommen und ließ ein erneutes Interesse an C ++ erkennen. Um die Dynamik aufrechtzuerhalten, wurde das dritte Update innerhalb von 3 Jahren von der Planung zur Veröffentlichung auf 14882: 2014 geändert.

Die Arbeit hörte auch dort nicht auf. Der C ++ 17-Standard wurde vorgeschlagen und die Arbeit für C ++ 20 wurde gestartet.

Aktuelle Arbeitsentwürfe

Alle veröffentlichten ISO-Standards sind im ISO-Store ( http://www.iso.org ) erhältlich. Die Arbeitsentwürfe der C ++ - Standards sind jedoch kostenlos öffentlich verfügbar.

Die verschiedenen Versionen des Standards:

C ++ 11

Der C ++ 11-Standard ist eine wichtige Erweiterung des C ++ - Standards. Nachfolgend finden Sie eine Übersicht der Änderungen, die in den isocpp-FAQs mit Links zu detaillierterer Dokumentation zusammengefasst wurden.

Spracherweiterungen

Allgemeine Merkmale

Klassen

  • = default und = löschen
  • Kontrolle der Standardeinstellungen zum Verschieben und Kopieren
  • Konstruktoren delegieren
  • Initialisierer innerhalb der Klasse
  • Geerbte Konstruktoren
  • Steuerelemente überschreiben: überschreiben
  • Steuerelemente überschreiben: final
  • Explizite Konvertierungsoperatoren

Andere Arten

  • Aufzählungsklasse
  • long long - eine längere ganze Zahl
  • Erweiterte Ganzzahltypen
  • Generalisierte Gewerkschaften
  • Generalisierte PODs

Vorlagen

  • Externe Vorlagen
  • Template-Aliase
  • Variadische Vorlagen
  • Lokale Typen als Vorlagenargumente

Parallelität

  • Gleichzeitiges Speichermodell
  • Dynamische Initialisierung und Zerstörung mit Parallelität
  • Thread-lokaler Speicher

Verschiedene Sprachfunktionen

Bibliothekserweiterungen

Allgemeines

  • unique_ptr
  • shared_ptr
  • schwach_ptr
  • Müllabfuhr ABI
  • Tupel
  • Eigenschaften eingeben
  • Funktion und Bindung
  • Reguläre Ausdrücke
  • Zeit-Dienstprogramme
  • Zufallszahlengenerierung
  • Aufteiler für Bereiche

Container und Algorithmen

  • Algorithmenverbesserungen
  • Containerverbesserungen
  • unordered_ * container
  • std :: array
  • forward_list

Parallelität

C ++ 14

Der C ++ 14-Standard wird häufig als Bugfix für C ++ 11 bezeichnet. Es enthält nur eine begrenzte Liste von Änderungen, von denen die meisten Erweiterungen der neuen Features in C ++ 11 sind. Nachfolgend finden Sie eine Übersicht der Änderungen, die in den isocpp-FAQs mit Links zu detaillierterer Dokumentation zusammengefasst wurden.

Spracherweiterungen

Bibliothekserweiterungen

Veraltet / Entfernt

C ++ 17

Der C ++ 17-Standard ist vollständig und wurde zur Standardisierung vorgeschlagen. In Compilern mit experimenteller Unterstützung für diese Features wird es normalerweise als C ++ 1z bezeichnet.

Spracherweiterungen

Bibliothekserweiterungen

C ++ 03

Der C ++ 03-Standard behandelt hauptsächlich Fehlerberichte des C ++ 98-Standards. Abgesehen von diesen Mängeln wird nur eine neue Funktion hinzugefügt.

Spracherweiterungen

C ++ 98

C ++ 98 ist die erste standardisierte Version von C ++. Da es als Erweiterung zu C entwickelt wurde, werden viele Features hinzugefügt, die C ++ von C unterscheiden.

Spracherweiterungen (in Bezug auf C89 / C90)

  • Klassen, abgeleitete Klassen, virtuelle Memberfunktionen, const Memberfunktionen
  • Funktionsüberlastung, Operatorüberlastung
  • Einzeilige Kommentare (Wurde in der C-Sprache mit C99-Standard eingeführt)
  • Verweise
  • neu und löschen
  • boolescher Typ (Wurde in der C-Sprache mit C99-Standard eingeführt)
  • Vorlagen
  • Namespaces
  • Ausnahmen
  • bestimmte Besetzungen

Bibliothekserweiterungen

  • Die Standardvorlagenbibliothek

C ++ 20

C ++ 20 ist der kommende Standard von C ++, der sich derzeit in der Entwicklung befindet und auf dem C ++ 17-Standard basiert. Der Fortschritt kann auf der offiziellen ISO-CPP-Website verfolgt werden .

Die folgenden Funktionen sind einfach das, was für die nächste Version des C ++ - Standards, die für 2020 vorgesehen ist, akzeptiert wurde.

Spracherweiterungen

Bisher wurden keine Spracherweiterungen akzeptiert.

Bibliothekserweiterungen

Bisher wurden keine Bibliothekserweiterungen akzeptiert.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow