Von überall kommt ihr über dieses Logo auf diese Seite zurück!

Strukturen und Klassen


Objektorientiert heißt:
  • Logisch zusammengehörige Daten zu einer Einheit bündeln -> struct bzw. class
  • Funktionen zu deren Bearbeitung -> Methoden
  • Kapselung der Daten (private)
    Zugang nur über eine definierte Schnittstelle (public)
Beispiel
Datei komplex.h:
class komplex
{
public:
  double m_re, m_im;
  double betrag() const;
}

Datei komplex.cpp
#include 
#include "komplex.h"

double komplex::betrag()
{
  return sqrt(m_re*m_re+m_im+m_im);
}

Wenn const hinter der Methode steht, kann man erklären, dass keine Daten der Klasse durch Aufruf der Funktion geändert werden. Durch dieses Schlüsselwort kann man einer Konstante vom Typ komplex erlauben, diese Methode aufzurufen.

Konstruktor und Destruktor

Jede Klasse hat immer
  • mindestens einen Konstruktor -> Aufruf beim Entstehen eines Exemplars
  • genau einen Destruktor -> Aufruf beim Zerstören eines Exemplars

Beispiel:
class CPerson
{
  char m_name[20];
  int m_geb;
public:
  void SetName (const char *name);
  /*
   Inlinedefinition von SayName. Diese Funktion wird in der .cpp Datei nicht 
   mehr erwähnt, allerdings wird diese Funktion nicht aufgerufen, sondern die 
   Codezeilen werden an die Stelle des Aufrufs kopiert. Lohnt also nur bei 
   sehr kurzen Methoden, wo der call und return Befehl bereits eine zusätzliche 
   Last wäre.
   */
  void SayName() const
    { cout << "Mein Name ist " << m_name << endl; }
  CPerson();  // Konstruktor ohne Parameter
  ~CPerson(); // Destruktor ohne Parameter
  CPerson(const char *name); // Konstruktor mit einem Parameter
};
/*
 Semikolon am Ende der Klassendeklaration ist wichtig. Dies führt häufig zu 
 Fehlern, die erst in der .cpp Datei angezeigt werden und demnach nicht auf 
 Anhieb zu lokalisieren sind.
*/
}
Der Konstruktor und der Destruktor können in der zugehörigen .cpp Datei definiert werden und einige Dinge tun. Beide Methoden haben definitiv keinen Rückgabewert, auch nicht void.



Zurück auf die Vorlesung: Visual C++-Seite <> Homepage