Zoeken…


Invoering

In 1998 was er een eerste publicatie van de standaard waardoor C ++ een intern gestandaardiseerde taal werd. Vanaf dat moment is C ++ geëvolueerd, wat heeft geleid tot verschillende dialecten van C ++. Op deze pagina vindt u een overzicht van alle verschillende normen en hun wijzigingen ten opzichte van de vorige versie. De details over het gebruik van deze functies worden beschreven op meer gespecialiseerde pagina's.

Opmerkingen

Wanneer C ++ wordt genoemd, wordt vaak verwezen naar "de standaard". Maar wat is precies die norm?

C ++ heeft een lange geschiedenis. Begonnen als een klein project van Bjarne Stroustrup binnen Bell Labs, was het begin jaren 90 behoorlijk populair geworden. Meerdere bedrijven maakten C ++ -compilers zodat gebruikers hun C ++ -compilers op een breed scala van computers konden uitvoeren. Maar om dit te vergemakkelijken, zouden al deze concurrerende compilers een enkele definitie van de taal moeten delen.

Op dat moment was de C-taal met succes gestandaardiseerd. Dit betekent dat er een formele beschrijving van de taal is geschreven. Dit werd ingediend bij het American National Standards Institute (ANSI), dat het document ter inzage opende en vervolgens in 1989 publiceerde. Een jaar later, de International Organisation for Standards (omdat het verschillende acroniemen in verschillende talen zou hebben, kozen ze één vorm , ISO, afgeleid van het Griekse ISO, wat gelijk betekent.) Heeft de Amerikaanse norm als internationale norm overgenomen.

Voor C ++ was vanaf het begin duidelijk dat er een internationaal belang was. Een werkgroep binnen ISO werd gestart (bekend als WG21, binnen SubCommittee 22). Deze werkgroep heeft rond 1995 een eerste standaard opgesteld. Maar zoals programmeurs weten, is er niets gevaarlijkers voor een geplande levering dan last-minute functies, en dat gebeurde ook met C ++. In 1995 dook een coole nieuwe bibliotheek op met de naam STL, en de mensen die in WG21 werkten, besloten een afgeslankte versie toe te voegen aan de C ++ conceptstandaard. Dit zorgde er natuurlijk voor dat de deadlines werden gemist en slechts 3 jaar later werd het document definitief. ISO is een zeer formele organisatie, dus de C ++ Standard werd gedoopt met de niet erg verhandelbare naam ISO / IEC 14882. Omdat standaarden kunnen worden bijgewerkt, werd deze exacte versie bekend als 14882: 1998.

En inderdaad was er een vraag om de standaard bij te werken. De standaard is een heel dik document, dat bedoeld is om precies te beschrijven hoe C ++ -compilers zouden moeten werken. Zelfs een kleine dubbelzinnigheid kan het oplossen waard zijn, dus in 2003 werd een update uitgebracht als 14882: 2003. Dit heeft echter geen enkele functie toegevoegd aan C ++; de nieuwe functies waren gepland voor de tweede update.

Informeel stond deze tweede update bekend als C ++ 0x, omdat niet bekend was of dit tot 2008 of 2009 zou duren. Nou - die versie kreeg ook een kleine vertraging, daarom werd het 14882: 2011.

Gelukkig besloot WG21 dat niet meer te laten gebeuren. C ++ 11 werd goed ontvangen en verhuurd aan een hernieuwde interesse in C ++. Dus, om het momentum te behouden, ging de derde update van planning naar publicatie in 3 jaar, tot 14882: 2014.

Het werk stopte daar ook niet. De C ++ 17-standaard is voorgesteld en het werk voor C ++ 20 is gestart.

Huidige werkconcepten

Alle gepubliceerde ISO-normen zijn te koop in de ISO-winkel ( http://www.iso.org ). De werkversies van de C ++ -standaarden zijn echter gratis beschikbaar voor het publiek.

De verschillende versies van de standaard:

C ++ 11

De C ++ 11-standaard is een belangrijke uitbreiding van de C ++ -standaard. Hieronder vindt u een overzicht van de wijzigingen zoals deze zijn gegroepeerd in de veelgestelde vragen over isocpp met links naar meer gedetailleerde documentatie.

Taalextensies

Algemene kenmerken

Klassen

  • = standaard en = verwijderen
  • Controle van standaard verplaatsen en kopiëren
  • Constructeurs delegeren
  • In-class ledeninitializers
  • Overgenomen constructeurs
  • Bedieningselementen opheffen: negeren
  • Controles opheffen: definitief
  • Expliciete conversie-operators

Andere types

  • enum-klasse
  • lang lang - een langer geheel getal
  • Uitgebreide integer typen
  • Algemene vakbonden
  • Gegeneraliseerde POD's

Sjablonen

  • Externe sjablonen
  • Sjabloonaliassen
  • Variadic sjablonen
  • Lokale typen als sjabloonargumenten

samenloop

  • Concurrency-geheugenmodel
  • Dynamische initialisatie en vernietiging met gelijktijdigheid
  • Thread-lokale opslag

Diverse taalfuncties

  • Wat is de waarde van __cplusplus voor C ++ 11?
  • Achtervoegsel type syntaxis
  • Vernauwing voorkomen
  • Haakse beugels
  • static_assert compilatiebeweringen
  • Raw string literals
  • attributen
  • opstelling
  • C99 functies

Bibliotheekextensies

Algemeen

  • unique_ptr
  • shared_ptr
  • weak_ptr
  • Garbage collection ABI
  • tuple
  • Typ kenmerken
  • functie en binden
  • Normale uitdrukkingen
  • Tijd nutsbedrijven
  • Willekeurige nummer generatie
  • Scoped-allocators

Containers en algoritmen

  • Algoritmen verbeteringen
  • Container verbeteringen
  • unordered_ * containers
  • std :: matrix
  • forward_list

samenloop

C ++ 14

De C ++ 14-standaard wordt vaak een bugfix voor C ++ 11 genoemd. Het bevat slechts een beperkte lijst met wijzigingen, waarvan de meeste extensies zijn voor de nieuwe functies in C ++ 11. Hieronder vindt u een overzicht van de wijzigingen zoals deze zijn gegroepeerd in de veelgestelde vragen over isocpp met links naar meer gedetailleerde documentatie.

Taalextensies

Bibliotheekextensies

Verouderd / verwijderd

C ++ 17

De C ++ 17-standaard is compleet en is voorgesteld voor standaardisatie. In compilers met experimentele ondersteuning voor deze functies wordt dit meestal C ++ 1z genoemd.

Taalextensies

Bibliotheekextensies

C ++ 03

De C ++ 03-standaard behandelt voornamelijk defectrapporten van de C ++ 98-norm. Afgezien van deze defecten, voegt het slechts één nieuwe functie toe.

Taalextensies

C ++ 98

C ++ 98 is de eerste gestandaardiseerde versie van C ++. Omdat het is ontwikkeld als een uitbreiding op C, zijn veel van de functies toegevoegd die C ++ onderscheiden van C.

Taalextensies (met betrekking tot C89 / C90)

  • Klassen, afgeleide klassen, virtuele lidfuncties, const-lidfuncties
  • Functie overbelast, operator overbelast
  • Enkele regel opmerkingen (Is geïntroduceerd in de C-languague met C99 standaard)
  • Referenties
  • nieuw en verwijderen
  • boolean type (Is geïntroduceerd in de C-languague met C99 standaard)
  • Sjablonen
  • namespaces
  • uitzonderingen
  • specifieke casts

Bibliotheekextensies

  • De standaard sjabloonbibliotheek

C ++ 20

C ++ 20 is de aankomende standaard van C ++, momenteel in ontwikkeling, gebaseerd op de C ++ 17-standaard. De voortgang kan worden gevolgd op de officiële ISO cpp-website .

De volgende functies zijn gewoon wat is geaccepteerd voor de volgende release van de C ++ standaard, gericht op 2020.

Taalextensies

Er zijn momenteel geen taalextensies geaccepteerd.

Bibliotheekextensies

Er zijn momenteel geen bibliotheekextensies geaccepteerd.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow