Einführung in C++ – Vorteile, Compiler, Namespaces – Teil1


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?

  1. x.cc und x.h als Ausgangsdateien
  2. x.i, Header Dateien inkludieren, Hardware Plattform abfragen, Präprozessor Direktiven ausführen (z.B. #define, Variablen /Funktionen werden ersetzt im Code)
  3. x.o, mit C++ Compiler g++, Assembler Maschinencode erzeugen, dieser ist hardware- und betriebssystemabhängig
  4.  Linker schreibt die Adressen der verwendeten libs und verbindet alle Objektdateien (.o) miteinander
  5. 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

  1. lokaler Block (highest Prio)
  2. übergeordneter Block
  3. 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