8 C ++ Not-So-Anfänger Eigenschaften

Die Sprache C ++ enthält so viele Funktionen, die Anfang Programmierer kann unmöglich ein jeder verstehen. Glücklicherweise brauchen Sie nicht alle Funktionen der Sprache zu beherrschen, um große, reale Programme zu schreiben. Im Folgenden sind zehn Funktionen, die Sie bei nach vorne schauen möchten, nur für den Fall, dass Sie sie in anderer Leute Programme zu sehen.

Die C ++ GOTO-Befehl

Dieser Befehl geht den ganzen Weg zu C zurück, der Vorläufer von C ++. Grundsätzlich diesem Befehl ist einfach. Sie können platzieren goto Label- wo auch immer du willst. Wenn C ++ über diesen Befehl kommt, geht die Steuerung sofort auf das Etikett, wie in diesem Code-Schnipsel demonstriert:

 für (-) {if (bedingter Ausdruck) {goto outahere -} // ... was auch immer Sie wollen ...} outahere: // ... Programm setzt hier ...

In der Praxis jedoch, gehe zu eine Vielzahl von Möglichkeiten führt zu vermasseln. Auf jeden Fall dauerte es nicht lange, bevor Programmierer festgestellt, dass die beiden häufigsten Verwendungen des gehe zu waren Schleifen zu verlassen und in einer Schleife zum nächsten Fall zu gehen. Die C-Normenausschuss eingeführt Unterbrechung und fortsetzen und fast vollständig die Notwendigkeit der entfernte gehe zu Befehl.

Die C ++ ternäre Operator

Das ternäre Operator ein Operator an C und C ++ einzigartig. Es funktioniert wie folgt:

int n = (bedingt)? expression1: expression2-

Das ? Operator wertet zunächst die bedingt. Wenn die Bedingung wahr ist, dann ist der Wert des Ausdrucks gleich dem Wert von expression1- ansonsten ist es, gleich dem Wert von expression2.

Zum Beispiel könnte man eine Umsetzung maximal() Funktion wie folgt:

int max (int n1, n2 int) {return (n1> n2)? n1: n2}

Der ternäre Bediener kann auf jede Art von numerischen angewendet werden, kann aber nicht überlastet werden. Der ternäre Operator ist wirklich ein Ausdruck - nicht eine Steueranweisung wie ein ob.

Aufzählungstypen in C ++

Die einfache Idee ist, dass Sie Konstanten definieren und lassen C ihnen Werte zuweisen ++, wie hier gezeigt:

Enum Farben {BLACK, blau, grün, gelb, rot} -Farben myColor = BLACK-

Das Problem mit Aufzählungstypen liegt in der Umsetzung: Anstatt eine wahre Art zu erstellen, C ++ verwendet ganze Zahlen. In diesem Fall, SCHWARZ wird der Wert zugewiesen 0, BLAU zugewiesen 1, green2, und so weiter.

Die 2011-Standardbibliothek für C ++ # 147-Fest # 148- dieses Problem durch einen Aufzählungs Klasse Art zu schaffen, wie im folgenden Ausschnitt gezeigt:

Enum-Klasse Farbe {BLACK, blau, grün, gelb, rot} -Farben myColor = Farben :: BLACK-

In dieser Version, Farben ist ein neuer Typ. Jede der Konstanten, SCHWARZ, BLAU, und so weiter, sind Mitglieder der Typ Farben. Sie können immer noch ein Objekt der Klasse geworfen Farben in eine int, aber eine implizite Umwandlung ist nicht erlaubt.

C ++ Namespaces

Es ist möglich, verschiedene Einheiten in zwei verschiedenen Bibliotheken den gleichen Namen zu geben. Beispielsweise die Klasse() Funktion innerhalb der Schüler Bibliothek weist wahrscheinlich eine Note, während die Klasse() Funktion innerhalb der Tiefbau Bibliothek könnte die Steigung auf der Seite eines Hügels. Um dieses Problem zu vermeiden, erlaubt C ++ Programmierer ihren Code in einem eigenen Namensraum zu platzieren. So ist die Klasse innerhalb der Schüler Namensraum unterscheidet sich von der Klasse innerhalb Tiefbau.

Der Namensraum ist über und jenseits der Klassenname. Das Klasse() Memberfunktion der Klasse Bulldozer in dem Tiefbau Namespace hat den erweiterten Namen Bauingenieurwesen :: BullDozer :: Grad ().

Alle Bibliotheksobjekte und Funktionen sind im Namensraum std. Die Erklärung zu Beginn des Programms Vorlage Namespace-STD- sagt, dass, wenn man sich in nicht das angegebene Objekt in der Standard-Namespace zu sehen, dann gehen std.

Rein virtuelle Funktionen in C ++

Sie müssen nicht eine Funktion deklariert virtuellen definieren. Eine solche nicht definierte Funktion wird als bekannt rein virtuelle Member-Funktion. An diesem Punkt kommen jedoch die Dinge kompliziert. Zum Beispiel kann eine Klasse mit einem oder mehreren reinen virtuellen Funktionen wird gesagt, abstrakt zu sein und nicht verwendet werden können, um ein Objekt zu erstellen. Gerät dieses Thema, nachdem Sie mit virtuellen Funktionen wohl fühlen und die späte Bindung.

Die C ++ String-Klasse

Die meisten Sprachen sind ein Schnur Klasse als intrinsischer Typ für die einfache Zeichenfolgen Handhabung. In der Theorie sollte der String-Klasse die gleiche für C ++ zu tun. In der Praxis ist es jedoch nicht so einfach. weil Schnur keine intrinsische Typ ist, erzeugt die Fehlermeldungen, die der Compiler, wenn etwas mehr falsch sind, geht mit benutzerdefinierten assoziiert solche wie Klassen. Für einen Anfänger können diese Nachrichten sehr schwer zu interpretieren.

Schnur nicht einmal eine Klasse ist. Es ist eine Instanz einer Template-Klasse. Die Fehlermeldungen kann atemberaubend sein.

Mehrfachvererbung in C ++

Eine Klasse kann tatsächlich mehr als eine Basisklasse erweitern. Das klingt einfach, aber kann ziemlich kompliziert werden, wenn die beiden Basisklassen Elementfunktionen mit dem gleichen Namen enthalten. Noch schlimmer ist, wenn beide Basisklassen selbst sind Subklassen von einigen gemeinsamen Klasse.

In der Tat entstehen so viele Probleme, die C ++ ist die einzige C-ähnliche Sprache, die mehrfache Vererbung unterstützt. Java und C #, beide abgeleitet Sprachen von C ++, entschied sich die Unterstützung für Mehrfachvererbung zu fallen.

C ++ Vorlagen und die Standard Template Library

Die Macher von C ++ bemerkt, wie ähnliche Funktionen wie die folgenden sind:

int max (int n1, n2 int) {if (n1> n2) {return N1-} return N2-} Doppelzimmer max (Doppel n1, n2 Doppel) {if (n1> n2) {return N1-} return N2-} char max (char n1, n2 char) {if (n1> n2) {return N1-} return N2-}

# 147-Wäre es nicht cool, # 148- sagt man zu einem anderen, # 147-wenn Sie den Typ mit einem Pseudo-Typ T ersetzen könnten, die Sie bei der Kompilierung definieren könnte # 148- Bevor Sie es kennen, presto - Vorlagen werden ein Teil von C ++?:

Vorlage  T max (T T1, T T2) {if (t1> t2) {return T1-} return T2-}

Jetzt kann der Programmierer ein erstellen max (int, int) durch ersetzen T mit int und das Ergebnis der Zusammenstellung, erstellen max (double, double) durch ersetzen T mit doppelt, und so weiter. Der Normenausschuss freigegeben sogar eine ganze Bibliothek von Klassen, wie der Standard Template Library (STL kurz) bekannt, basierend auf Template-Klassen.

Für einen Anfänger, beginnt das Thema der Template-Klassen jedoch zu syntaktisch sehr kompliziert. Darüber hinaus erzeugt die Fehler, dass der Compiler, wenn Sie eine Vorlage Instanziierung falsch sind verwirrend zu einem Experten zu bekommen, nie einen Anfänger kümmern. Dies ist definitiv ein Thema, das warten muss, bis Sie mit der Basissprache wohl fühlen.

Menü