C++ Grundlagen: Syntax & Objektorientierte Basis
Ein C++-Programm lässt sich als Sammlung von Objekten betrachten, die durch Aufruf ihrer Methoden miteinander kommunizieren. Schauen wir uns kurz an, was Klasse, Objekt, Methoden und Instanzvariablen bedeuten.
Objekt – Objekte haben Zustände und Verhaltensweisen. Beispiel: Ein Hund hat Zustände (Farbe, Name, Rasse) und Verhaltensweisen (Schwanzwedeln, Bellen, Fressen). Ein Objekt ist eine Instanz einer Klasse.
Klasse – Eine Klasse ist eine Vorlage/Blaupause, die die Verhaltensweisen und Zustände beschreibt, die Objekte dieses Typs unterstützen.
Methoden – Eine Methode ist im Grunde ein Verhalten. Eine Klasse kann viele Methoden enthalten. Hier wird Logik geschrieben, Daten manipuliert und Aktionen ausgeführt.
Instanzvariablen – Jedes Objekt hat seinen eigenen Satz an Instanzvariablen. Der Zustand eines Objekts entsteht durch die Werte, die diesen Variablen zugewiesen werden.
Struktur eines C++-Programms
Ein einfaches „Hello World“-Programm:
#include <iostream>
using namespace std;
// main() ist der Einstiegspunkt der Programmausführung
int main() {
cout << "Hello World"; // gibt "Hello World" aus
return 0;
}
Analyse der Programmteile:
C++ definiert diverse Header, die notwendige oder nützliche Informationen enthalten. Für dieses Programm wird
<iostream>benötigt.using namespace std;weist den Compiler an, denstd-Namespace zu nutzen. Namespaces sind eine neuere Ergänzung in C++.// main() ist der Einstiegspunkt...ist ein einzeiliger Kommentar. Einzeilige Kommentare beginnen mit//und enden mit der Zeile.int main()ist die Hauptfunktion, wo die Programmausführung beginnt.cout << "Hello World";gibt die Nachricht auf dem Bildschirm aus.return 0;beendetmain()und liefert den Wert 0 an den aufrufenden Prozess zurück.
Kompilieren und Ausführen
- Texteditor öffnen und Code einfügen.
- Datei speichern als:
hello.cpp - Kommandozeile öffnen und in das Verzeichnis wechseln.
g++ hello.cppeingeben und Enter drücken. Bei fehlerfreiem Code wirda.out(Linux/macOS) odera.exe(Windows) erzeugt../a.out(Linux/macOS) bzw.a.exe(Windows) ausführen.- Ausgabe:
Hello World
$ g++ hello.cpp
$ ./a.out
Hello World
Stellen Sie sicher, dass g++ im PATH liegt und Sie im korrekten Verzeichnis arbeiten.
Alternativ können C/C++-Programme mit makefile kompiliert werden. Details in unserem „Makefile Tutorial“.
Semikolons und Blöcke in C++
In C++ ist das Semikolon Statement-Terminator. Jede einzelne Anweisung muss mit einem Semikolon enden – es markiert das Ende einer logischen Einheit.
x = y;
y = y + 1;
add(x, y);
Ein Block ist eine Menge logisch verbundener Anweisungen, umschlossen von geschweiften Klammern:
{
cout << "Hello World"; // gibt Hello World aus
return 0;
}
C++ erkennt das Zeilenende nicht als Terminator. Daher ist die Position einer Anweisung in der Zeile irrelevant:
x = y; y = y + 1; add(x, y);
ist gleichbedeutend mit
x = y;
y = y + 1;
add(x, y);
C++ Bezeichner (Identifiers)
Ein Bezeichner benennt Variablen, Funktionen, Klassen, Module oder andere benutzerdefinierte Elemente. Er beginnt mit einem Buchstaben (A–Z, a–z) oder Unterstrich (_), gefolgt von null oder mehr Buchstaben, Unterstrichen und Ziffern (0–9).
Interpunktionszeichen wie @, $, % sind nicht erlaubt. C++ ist case-sensitive – Manpower und manpower sind unterschiedliche Bezeichner.
Beispiele gültiger Bezeichner:
mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal
C++ Schlüsselwörter (Keywords)
Die folgenden reservierten Wörter dürfen nicht als Konstanten, Variablen oder andere Bezeichner verwendet werden:
| asm | else | new | this |
| auto | enum | operator | throw |
| bool | explicit | private | true |
| break | export | protected | try |
| case | extern | public | typedef |
| catch | false | register | typeid |
| char | float | reinterpret_cast | typename |
| class | for | return | union |
| const | friend | short | unsigned |
| const_cast | goto | signed | using |
| continue | if | sizeof | virtual |
| default | inline | static | void |
| delete | int | static_cast | volatile |
| do | long | struct | wchar_t |
| double | mutable | switch | while |
| dynamic_cast | namespace | template |
Trigraphen
Einige Zeichen haben eine alternative Darstellung als Trigraph-Sequenz – drei Zeichen, die ein einzelnes Zeichen repräsentieren, immer beginnend mit ??.
Trigraphen werden überall expandiert: in String-Literalen, Zeichen-Literalen, Kommentaren und Präprozessor-Direktiven.
Häufigste Trigraph-Sequenzen:
| Trigraph | Ersetzung |
|---|---|
| ??= | # |
| ??/ | \ |
| ??' | ^ |
| ??( | [ |
| ??) | ] |
| ??! | | |
| ??< | { |
| ??> | } |
| ??- | ~ |
Nicht alle Compiler unterstützen Trigraphen; sie werden wegen ihrer Verwirrungsgefahr nicht empfohlen.
Whitespace in C++
Eine Zeile, die nur Whitespace (evtl. mit Kommentar) enthält, ist eine Leerzeile und wird vom Compiler ignoriert.
Whitespace umfasst Leerzeichen, Tabs, Zeilenumbrüche und Kommentare. Er trennt Teile eines Statements und ermöglicht dem Compiler, zu erkennen, wo ein Element endet und das nächste beginnt.
Beispiel 1
int age;
Zwischen int und age muss mindestens ein Whitespace-Zeichen stehen, damit der Compiler sie unterscheiden kann.
Beispiel 2
fruit = apples + oranges; // Gesamte Früchtezahl
Hier sind keine Whitespace-Zeichen zwischen fruit und = oder = und apples erforderlich – sie sind aber für Lesbarkeit erlaubt.
C Sprache
- C++-Eingabe und Ausgabe meistern: Ein praktischer Leitfaden
- C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
- C++-Kommentare: Best Practices für lesbaren, wartbaren Code
- C++ Streams meistern: cout, cin, cerr, clog – Praktischer Guide
- Java Grundlagen: Grundlegende Syntax meistern
- C-Grundsyntax meistern: Tokens, Struktur und Semikolons
- C++ Programmiersprache: Überblick & Kernfeatures
- C++ Kommentare meistern: Best Practices & Syntax
- C++ Konstanten & Literale: Typen, Syntax & Best Practices
- C++ Operatoren: Typen, Nutzung & Best Practices