Zusammenfassung c++
Zusammenfassung c++
Zusammenfassung c++
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
C++ <strong>Zusammenfassung</strong> Klassen 1<br />
Syntax : Klassenschlüssel Klassenname [] [{ }]<br />
Klassenschlüssel : class, struct, union<br />
Basisliste : Liste der Elternklassen siehe Vererbung<br />
Elementliste : Liste der Memberdaten und Funktionen<br />
Sichtbarkeit<br />
Memberdaten<br />
: public, private, protected<br />
public-Member sind inner- und außerhalb der Klasse bekannt, private-Member sind nur in<br />
den Memberfunktionen bekannt, protected tritt in Verbindung mit Vererbung auf.<br />
union enthält nur public-Member, struct-Member sind als Standard public, class-Member sind<br />
als Standard private.<br />
: Die Daten einer Klasse, sie repräsentieren die zeitvarianten/zeitinvarianten bzw. die Klassen-/Objektbezogenen<br />
Zustände von Objekten einer Klasse, sie können von jedem beliebigen,<br />
an der Stelle bekannten Typ, auch einem Klassentyp sein und sind in der Regel private oder<br />
protected vereinbart.<br />
Memberfunktionen: Die Funktionen einer Klasse, sie sind in der Regel public und stellen das Interface der Klasse<br />
dar, ausschließlich über sie sollte auf die Memberdaten zugegriffen werden. Sie lassen sich<br />
gruppieren in Zugriffsfunktionen, Verwaltungsfunktionen, Implementationsfunktionen und<br />
Hilfsfunktionen. Sie verfügen über einen this-Pointer, der auf das aktuelle Objekt zeigt.<br />
Memberfunktionen können überladen werden und Defaultparameter besitzen.<br />
Definition von Memberfunktionen: Memberfunktionen werden entweder vollständig in der Klassendeklaration<br />
definiert, dann werden sie automatisch als Inlinefunktionen übersetzt, oder sie werden außerhalb<br />
der Klassendeklaration definiert, dann wird dem Funktionsnamen der Klassenname<br />
gefolgt vom scope-operator '::' vorangestellt. Der Scopeoperator stellt die Verbindung zur<br />
zugehörigen Klasse her und öffnet für die Funktionsdefinition den Namensraum der zugehörigen<br />
Klasse.<br />
Gültigkeitsbereiche:lokalerBlock, umgebende Blöcke, Klasse, Quelldatei<br />
Ein Bezeichner eines "inneren" Gültigkeitsbereiches verdeckt einen gleichen Bezeichner eines<br />
äußeren Gültigkeitsbereiches.<br />
Konstruktoren<br />
Destruktoren<br />
Lebenszeit<br />
Operator new<br />
Operator delete<br />
: Konstruktoren sind Memberfunktionen, die bei jeder Erzeugung eines Objektes automatisch<br />
aufgerufen werden. Sie haben keinen Returnwert, wohl aber Parameter, wobei Defaultparameter<br />
zulässig sind. Konstruktoren dürfen überladen werden. Existiert zu einer Klasse kein<br />
Konstruktor, so wird vom Kompiler ein Defaultkonstruktor erzeugt, der nichts macht. Ein<br />
spezieller Konstruktor ist der Kopierkonstruktor, der als Parameter eine Referenz auf ein<br />
Objekt der eigenen Klasse erhält. Er ist nötig, wenn Klassen Pointer als Memberdaten<br />
enthalten. Existiert kein Kopierkonstruktor, so werden bei der Initialisierung eines Objektes<br />
durch ein anderes Objekt der Klasse die Datenmember elementweise kopiert. Der Name eines<br />
Konstruktors besteht aus dem Klassennamen.<br />
: Destruktoren werden automatisch bei der Vernichtung von Objekten aufgerufen, sie haben<br />
keinen Returnwert und keine Parameter, somit können sie nicht überladen werden. Ihr Name<br />
besteht aus dem Klassennamen und einer vorangestellten Tilde '~', ihre Aufgabe ist es, ein<br />
Objekt zu bereinigen.<br />
: Objekte können per Definition angelegt werden, dann hängt ihre Lebenszeit vom Gültigkeitsbereich<br />
und der Speicherklasse ihrer Definition ab. Wird der Gültigkeitsbereich des Bezeichners<br />
verlassen, so wird das Objekt automatisch vernichtet, wenn es nicht mit dem<br />
Speicherklassenattribut static definiert wurde. Objekte, die dynamisch mit new erzeugt worden<br />
sind, müssen mit delete vernichtet werden.<br />
: 'new' [ '(' ')']<br />
Er erzeugt ein Objekt, vom Typ typname, wobei zunächst der Speicher aus dem free store<br />
bereitgestellt, und danach der Konstruktor entsprechend der Initialisierungsparameterliste<br />
aufgerufen wird und gibt einen Pointer vom Typ typname* auf das erzeugte Objekt zurück.<br />
Dieser Pointer darf nicht "verlorengehen", da sonst der durch das Objekt belegte Speicher<br />
nicht freigegeben werden kann.<br />
: Vernichtet ein Objekt, dazu wird zunächst der Destruktor ausgeführt und danach der Speicher<br />
zurückgegeben, darf nur in Verbindung mit Pointern, die mit new erzeugt wurden, verwendet<br />
werden.<br />
Zugriff auf Member: Innerhalb von Memberfunktionen werden die Member der eigenen Klasse durch ihren<br />
Membernamen angesprochen. Von außen erfolgt der Zugriff über den Objektnamen, den<br />
Punkt- oder Pfeilselektor gefolgt von dem Membernamen.
C++ <strong>Zusammenfassung</strong> Klassen 2<br />
const-objekts<br />
Memberobjekte<br />
: Von Klassen können, so wie von jedem anderen Typ Konstanten definiert werden, diese<br />
müssen bei ihrer Definition initialisiert werden, ihr Wert ist später nicht mehr änderbar. Es<br />
können nur Memberfunktionen, die auf Datenmember nicht schreibend zugreifen, aufgerufen<br />
werden, sie müssen mit dem Schlüsselwort const hinter der Parameterliste gekennzeichnet<br />
sein. const-Memberfunktionen können durch nicht-const-Memberfunktionen mit gleichen<br />
Parameterlisten überladen werden.<br />
: Member einer Klasse können selbst von einem Klassentyp sein. Für ihre Initialisierung wird<br />
hinter dem Funktionskopf des Konstruktors ein Memberinitialisierer angegeben in der Form:<br />
':' '('')'<br />
Mehrere Memberinitialisierer werden durch Komma getrennt nacheinander angegeben, die<br />
Abarbeitungsreihenfolge ist nicht definiert, die Memberinitialisierer werden vor dem Konstruktor<br />
ausgeführt. Auch ein Memberobjekt kann ein Konstobjekt sein, es kann nur durch<br />
den Memberinitialisierer mit einem Wert belegt werden.<br />
Zuweisungoperator:Werden Objekte einander zugewiesen, so werden ihre Datenmember memberweise kopiert.<br />
Enthält ein Objekt Pointer, so ist dies nicht sinnvoll, der Zuweisungsoperator muss für die<br />
Klasse überladen werden, hierfür wird eine Funktion<br />
& 'operator='('const' & other)<br />
in die Klasse aufgenommen. Ihre Definition enthält dann die notwendigen Operationen zum<br />
Kopieren des Objektes. Eine Klasse mit überladenem Zuweisungsoperator benötigt in der<br />
Regel auch einen Kopierkonstruktor für die Initialisierung von Objekten durch Objekte ihrer<br />
Klasse sowie einen Destructor.<br />
this-Pointer<br />
: Der this-Pointer ist ein Pointer auf das aktuelle Objekt. Er wird als impliziter Parameter bei<br />
jedem Memberfunktionsaufruf übergeben, er kann benutzt werden, um festzustellen, ob ein<br />
als Parameter übergebenes Objekt das aktuelle Objekt selbst ist.<br />
static Memberdaten: Für statische Memberdaten existiert nur eine Instanz für alle Objekte der Klasse. Die statischen<br />
Memberdaten werden in der Klasse nur deklariert und außerhalb der Klassendeklaration<br />
mit vorangestelltem Klassennamen und scope-operator definiert, und müssen auch in<br />
ihrer Definition initialisiert werden. Sie werden nicht über die Konstruktoren initialisiert. Auf<br />
statische Memberdaten kann zusätzlich über den Klassennamen und den scope-operator<br />
zugegriffen werden.<br />
friend-Functions : Friend-Funktionen sind keine Memberfunktionen, können aber trotzdem auf die privaten<br />
Daten der Klasse, die sie als Friend ausweist zugreifen, sie werden vor allem zur Konvertierung<br />
und zum Operatorüberladen benutzt. Um eine Friendfunktion zu vereinbaren, wird die<br />
Funktionsdeklaration in die Klassenvereinbarung aufgenommen und das Schlüsselwort friend<br />
vorangestellt.<br />
friend-classes<br />
: Memberfunktionen von Friend-Klassen haben uneingeschränkten Zugriff zu den privaten<br />
Member der Klasse, die die Friend-Vereinbarung enthält. Eine Friend-Klassenvereinbarung<br />
besteht aus dem Schlüsselwort friend class gefolgt von dem Klassenamen der befreundeten<br />
Klasse. Klassen können auch wechselseitig befreundet sein. Auch einzelne Funktionen<br />
können als friend gekennzeichnet werden.