03.02.2014 Aufrufe

Zusammenfassung c++

Zusammenfassung c++

Zusammenfassung c++

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!