Vorteile von C++
- sehr gute Performance, Code wird kompiliert und vom Betriebssystem ausgeführt wird. Keine Interpretation wie Java, Code kann nur von der JVM ausgeführt werden
- es kann auch C eingebaut werden, selber Compiler: GNU C-Compiler
Vorteile von C++ gegenüber dem Vorgänger C
- strengere Typprüfung, zur Laufzeit/Late Binding
- Objektorientierung möglich
- verbessertes Speichermanagement
- Exceptions Handling
Der C++ Kompilationsvorgang: Wie arbeitet der GNU-Compiler?
- x.cc und x.h als Ausgangsdateien
- x.i, Header Dateien inkludieren, Hardware Plattform abfragen, Präprozessor Direktiven ausführen (z.B. #define, Variablen /Funktionen werden ersetzt im Code)
- x.o, mit C++ Compiler g++, Assembler Maschinencode erzeugen, dieser ist hardware- und betriebssystemabhängig
- Linker schreibt die Adressen der verwendeten libs und verbindet alle Objektdateien (.o) miteinander
- x.exe, ausführbare Shell-Datei erzeugen
Deklaration, Definition, Initialisierung und Zuweisung in C++
Deklaration
- keine Speicherzuweisung
- beliebig oft möglich
inf f(char c); extern char c; inf f(char c);
Definition
- Objekte im Speicher anlegen
- ist auch eine Deklaration
- nur einmal möglich
inf f(char c){return 'a';}; char c;
Initialisierung
- Zuweisung von Werten
inf a = 1;
Zuweisung
- ändern initialisierter Werte
inf a = 1;//Initialisierung a = 2; //Zuweisung
Namespaces in C++
- Vermeidung von Namenskonflikten bei gleichen Funktionsnamen/Variablen
- Elemente innerhalb eines Namespaces müssen immer unter Angabe des Namespaces verwendet werden, Ausnahme using
namespace A{ void f(){cout "lala"}; } void main() { A::f();// lala //ODER using A; f();//lala }
Sonderfall:
namespace A{ void f(){cout << "lala"}; } void main() { void f(){cout << "blub"; } using A; f();//blub A::f();//lala }
ZuordnungSpriorisierung bei uneindeutigen Funktionsnamen
- lokaler Block (highest Prio)
- übergeordneter Block
- Namespace mit using
Schachtelung von Namespaces
namespace A{ namespace B{f();}; }; A::B::f();
Inhaltsverzeichnis:
Einführung in C++ – Vorteile, Compiler, Namespaces – Teil1
Einführung in C++ – Zeiger, Pointer,Referenzen – Teil2
Einführung in C++ – Datentypen, Casting, Klassen – Teil3
Einführung in C++ – Funktionen und Operatoren überladen (Overloading) – Teil4
Einführung in C++ – Klassen: Vererbung, Adjustment, Friends, abstrakt – Teil5