Ausdrücke und Erklärungen in C ++ Programmierung

Um eine Berechnung in der C ++ Programm ausführen müssen Sie einen Ausdruck. Ein Ausdruck ist eine Aussage, die sowohl einen Wert und einen Typ hat. In der C ++ Programm, ist eine Erklärung Anweisung, die eine Variable definiert, oder es ist ein "Haltetank" für irgendeine Art von Wert wie eine Zahl oder ein Zeichen.

Menu

Expressions

Ausdrücke nehmen Sie eine der folgenden Formen:

objName // für eine einfache objectoperator Ausdruck // für einstellige operatorsexpr1 Operator ausdr2 // für binäre operatorsexpr1? expr2: expr3 // für das ternäre operatorfuncName ([Argumentliste]) - // für Funktionsaufrufe

Wörtliche Ausdrücke

Eine wörtliche ist eine Form der konstanten Ausdruck. Die verschiedenen Typen von Literalen sind in der folgenden Tabelle definiert.

BeispielArt
1int
1Llong int
1LL-long long int
1.0doppelt
1.0Fschweben
'1'verkohlen
"ein Faden"char * (automatisch mit einem Null-Zeichen beendet)
L "eine Zeichenfolge"wchar_t *
U8 "Dies ist ein UTF-8-String mit UTF-8-Zeichen: u2018"char8_t *
u "dies ist ein UTF-16-String mit einem UTF-16-Zeichen: u2018"char16_t *
U "Dies ist ein UTF-32-String mit einem UTF-32-Zeichen: U00002018"char32_t *
wahr falschbool
0b101binär (C ++ 2014-Standard)

Erklärungen

Erklärungen verwenden sowohl intrinsische als auch benutzerdefinierte Typen. Die intrinsischen Typen sind

[]verkohlen[] Wchar_t [] [intfloat] [lang] doublebool

Erklärungen haben eine der folgenden Formen:

[] [Const] var [= Ausdruck] type - // Variable [] [const] type array [size] [= {list}] - // array [const] type Objekt [(Argumentliste)] - // Objekt [const] Objekt [= {Argument list}] type - // Alternative [const] * [const] type ptr [= Zeiger Ausdruck] - // pointertype refname = objekt- // Reference fnName ([Argumentliste]) - // Funktion

Das Schlüsselwort Auto kann verwendet werden, wenn C ++ den Typ der Variable selbst bestimmen kann:

auto var = 1L- // die Art der var long int

Das Schlüsselwort decltype extrahiert den Typ eines Ausdrucks. Diese können dann verwendet werden, wo immer ein Typname verwendet wird. Zum Beispiel verwendet das folgende Beispiel decltype eine zweite Variable mit dem gleichen Typ wie eine vorhandene Variable zu deklarieren:

decltype (Q1) var2- // die Art der var2 ist die gleiche wie var1

Eine Funktionsdefinition hat das folgende Format:

// Einfache Funktion [] geben fnName (Argumentliste) {...} // Member-Funktion außerhalb der Klasse definiert [inline] Typ Class :: func (Argumentliste) [const] {...} // Konstruktor / Destruktoren kann auch außerhalb von classClass :: Class ([Argumentliste]) {...} Class :: ~ Class () {...} // Konstrukteuren / destructor gelöscht oder voreingestellt werden können anstelle von definitionClass definiert werden //: : Klasse ([Argumentliste]) = -Klasse :: ~ Klasse () = -

Ein überladener Operator sieht aus wie eine Funktionsdefinition. Die meisten überladenen Operatoren können entweder als Mitglied oder einfache Funktionen geschrieben werden. Wenn sie als Member-Funktion geschrieben, *Dies ist das erste Argument für den Bediener angenommen:

Meine Klasse operator + (const MyClass m1, const MyClass m2) - // simpleMyClass MyClass :: operator + (const MyClass m2) - // Mitgliedschaft

Benutzer können auch ihre eigenen Typen mit dem definieren Klasse oder structStichworte:

 Classname [: [virtuellen] [public] Baseclass] {: // constructorClassName ([arg list]) lt; [: Mitglied (val), ...] {...} | -> Klassenname () [= -] // destructor [virtuellen] ~ Classname () lt; {...} | [= -> // Öffentliche Daten memberstype dataMemberName [= Anfangs] - // public Mitglied functionstype memberFunctionName ([arg list]) [{...}] // const Mitglied Function memberFunctionName ([arg list]) const [{. ..}] // virtuelle Mitglied functionsvirtual Typ memberFunctionName ([arg list]) [{...}] - // rein virtuelle Mitglied functionsvirtual Typ memberFunctionName ([arg list]) = 0 - // Funktion, die eine Basis außer Kraft setzen müssen Klasse Function memberFunctionName ([arg list]) Aufschalten - // eine Funktion, die ([arg list]) endgültig nicht in einem subclasstype memberFunctionName außer Kraft gesetzt werden -} -

Darüber hinaus kann ein Konstruktor mit einem einzigen Argument gekennzeichnet werden als explizit was bedeutet, dass es nicht in einer impliziten Umwandlung wird von einem Typ in einen anderen verwendet werden. Flagging einen Konstruktor als Standard bedeutet "die Standard-C ++ Konstruktor Definition verwenden". Flagging einen Konstruktor als löschen entfernt die Konstruktordefinition ++ Standard C.

C ++ unterstützt zwei Arten von Aufzählungstypen. Die folgende alte Aufzählungstyp erzeugt keinen neuen Typ:

Enum STATE {DC, // bekommt 0ALABAMA, // bekommt 1ALASKA, // bekommt 2ARKANSAS, // bekommt 3 // ... und so weiter} -int n = ALASKA- // ALASKA ist vom Typ int

Standardmäßig ist ein einzelner Eintrag vom Typ int aber dies kann in der C ++ 2011-Standard geändert werden:

Enum ALPHABET: char {A = 'a', // bekommt 'A'B, // bekommt' B'C, // wird 'c' // ... und so weiter} -char c = A // A ist vom Typ char

C ++ 2011 erlaubt ein zweites Format, das eine neue Art erschafft:

// Die folgende Aufzählung einen neuen Typ STATEenum Klasse STATE definiert {DC, // bekommt 0ALABAMA, // bekommt 1ALASKA, // bekommt 2ARKANSAS, // bekommt 3 // ... und so weiter} -state s = STATE :: ALASKA- // jetzt ist STATE eine neue Art // folgendes eine andere zugrunde liegende typeenum Klasse ALPHABET verwendet: char {A = 'a', // bekommt 'A'B, // bekommt' B'C, // bekommt ' c '// ... und so weiter} -Alphabet c = ALPHABET :: A- // A ist vom Typ ALPHABET

Template Erklärungen haben ein etwas anderes Format:

// Typ T wird durch den Programmierer bei usetemplate bereitgestellt  Typ Function ([arg list]) template  class classname {{...}} -

Menü