NEU - Mamas Garten - Passwörter: Privat: 'Name meiner Mama', Urlaubsbilder: 'Name meiner Katze'

NEU - Mamas Garten - Passwörter: Privat: 'Name meiner Mama', Urlaubsbilder: 'Name meiner Katze'

Ich habe mir das Buch “Eine Tour durch C++” (2023) von Bjarne Stroustrup gekauft und werde hier ein paar Extrakte aus dem Buch als Nachschlagewerk zusammenstellen, um die leicht auffindbar zu haben.

Referenz

Als gutes Nachschlagewerk hat sich die folgende Internetseite etabliert: CPLUSPLUS.COM. Insbesondere ist hier die Standard Template Library sehr gut beschrieben und wird hier auch immer aktuell gehalten.

Neue Schlüsselwörter und deren Bedeutung

KategorieSchlüsselwortErläuterung
KonstantenconstKonstante, die zur Laufzeit zugewiesen werden kann. Muss nicht bereits zur Compile-Zeit feststehen.
KonstantenconstexprNEU !! Diese Konstante muß bereits beim Kompilieren feststehen Sie kann nicht erst zur Laufzeit berechnet werden.
KonstantenconstexprNEU !! Wenn der return-Wert einer Funktion einer const-Konstante zugewiesen werden soll.
Beispiel: constexpr u32 Funktionsname(...) {...}
KonstantenconstevalNEU !! Wenn der return-Wert einer Funktion einer constexpr Konstante zugewiesen werden soll, also bereits zur Compile-Zeit feststehen muß.
Beispiel: consteval u32 Funktionsname(...) {...}
DeklarationautoNEU !! Automatisiert die Zuweisung des richtigen Variablentypes.
Beispiel: auto ObjectInst_o = Object_o; Die Variable ObjectInst_o bekommt automatisch den richtigen Typ zugewiesen, nämlich den von Object_o.
Referenzu32 &a = ba ist nur ein anderer Name von b. Es wird keine Kopie von b angelegt und a zugewiesen, d.h. a ist b. Es wird auf dieselbe Speicherstelle verwiesen, ohne ein Pointer zu sein.
for-Schleifefor(u32 x : v) {...}Durchläuft eine Schleife ‘für alle x-Vorkommen in v. v könnte dann zum Beispiel ein Array sein oder ein Vector oder ….
NullpointernullptrWeist einem Pointer ein Nullpointer-Wert zu.
Beispiel: u32 *ZeigerAufU32_pu32 = nullptr;
Enumeratorenenum class Color_e { red, blue, green }NEU !! Spezieller enumerator Typ, die classnach dem enumzeigt an, dass eine Aufzählung stark typisiert ist und daher nur mit diesem enemerator Typ benutzt werden kann.
Moduleexport module NameNEU !! Mit dem Schlüsselwort export moduledefiniert man ein Modul mit dem entsprechenden Namen dahinter. Alles was nach außen hin bekannt sein soll, muß ebenfalls mit exportsichtbar gemacht werden. Alles was nicht exportiert wird, ist nachher beim importunbekannt.
Moduleimport NameNEU !! Hier wird ein Modul importiert und alle im Modul mit exportbekannt gemachten Definitionen importiert.
Beispiel: import stdimportiert die gesamte Standard-Template-Bibliothek als Modul (sollte man immer so machen).
Namensräumenamespace Bezeichnung { … }Deklariert einen neuen Namensbereich Bezeichnung. Auf den Namensraum kann mit den Schlüsselwort usingzugegriffen werden.
Namensräumeusing BezeichnungEine using-Deklaration macht einen Namen aus einem Namensraum benutzbar.
Beispiel: using Namensraum::Funktion;macht die Funktion Funktion aus dem Namensraum lokal verfügbar.
Namensraumusing namespace BezeichnungMacht alle Namen im Namensraum Bezeichnung verfügbar. Man spart sich Schreibarbeit.
Beispiel: using namespace std macht alle Namen im Standardbibliotheksraum verfügbar. Man spart sich dadurch die wiederholten std::-Qualifikationen für jedem Namen der Standardbibliothek.
Fehlerbehandlungtry { code } catch (const err_type &err_t) { Err_handling }Tritt zur Laufzeit im Code des try-Blocks ein Fehler auf, dann wird sofort der catch-Block ausgeführt. Dem Catch-Block wird eine Referenz mitgegeben, der den Fehlertyp genauer beschreibt. Der Fehlertyp kann dann im Error-Handling ausgegeben werden. Es kann mehrere catch-Blöcke geben für verschiedene Fehlertypen.
Fehlerbehandlungthrow err_hndl("Text");throw wirft direkt einen Fehler und die entsprechende Fehlerausgabe.
Fehlerbehandlungassert(Bedingung);Wenn die Bedingung eines assert() im Debug-Modus scheitert, wird das Programm beendet. Ist man nicht Debug-Modus wird nicht geprüft.
Fehlerbehandlungstatic_assert(Bedingung, "Text");static_assert()findet Fehler bereits beim komilieren.
Fehlerbehandlungvoid Funktion() noexcept { ... }noexceptkann benutzt werden um vorzugeben, dass eine Funktion niemals eine Exception werfen soll. Sollte doch ein Fehler auftreten, wird stattdessen das Programm beendet.
Smart-Pointerunique_ptr<type> PointerName_p;… definiert einen Pointer PointerName_p des Typs type.
Beispiel: unique_ptr<int> IntegerVar_pui;
Konstruktorclass Klasse_c
{
Klasse_c(type&) = default;
}
Explizite Verwendung des Kopierkonstruktors durch Verwendung von default. Andere Standardimplementierungen sind dadurch nicht mehr möglich (z.B. Move-Konstruktor).
Konstruktorclass Klasse_c
{
Klasse_c(type&) = delete;
}
Die Verwendung von deleteverbietet die Verwendung eines bestimmten Konstruktors. Im Beispiel links ist die Verwendung des Kopierkonstruktors nicht mehr möglich.
Konstruktorclass Klasse_c
{
explicit Klasse_c(int s);
}
Die Verwendung von explicit erlaubt ausschließlich nur die Verwendung dieses Konstruktors. Andere Konstruktoren werden nicht mehr implizit verwendet.

C++
Nach oben scrollen