dyna/person3.hpp

Das folgende Code-Beispiel stammt aus dem Buch
Objektorientiertes Programmieren in C++ - Ein Tutorial für Ein- und Umsteiger
von Nicolai Josuttis, Addison-Wesley München, 2001
© Copyright Nicolai Josuttis 2001


#ifndef PERSON_HPP
#define PERSON_HPP

// Headerdateien einbinden
#include <string>

// **** BEGINN Namespace Bsp ********************************
namespace Bsp {

class Person {
  /* neu: statische Klassenkomponenten
   */
  private:
    static long personenMaxID;   // höchste ID aller Personen
    static long personenAnzahl;  // aktuelle Anzahl aller Personen
  public:
    // aktuelle Anzahl aller Personen liefern
    static long anzahl () {
        return personenAnzahl;
    }

  // nicht-statische Klassenkomponenten
  private:
    std::string vname;        // Vorname der Person
    std::string nname;        // Nachname der Person
    const long  pid;          // neu: eindeutige ID der Person

  public:
    // Konstruktor aus Nachname und optional Vorname
    Person (const std::string&, const std::string& = "");

    // neu: Copy-Konstruktor
    Person (const Person&);

    // neu: Destruktor
    ~Person ();

    // neu: Zuweisung
    Person& operator = (const Person&);

    // Abfragen von Eigenschaften
    const std::string& nachname () const {  // Nachname liefern
        return nname;
    }
    const std::string& vorname () const {   // Vorname liefern
        return vname;
    }
    long id () const {                      // neu: ID liefern
        return pid;
    }

    friend bool operator == (const Person& p1, const Person& p2) {
        return p1.vname == p1.vname && p2.nname == p2.nname;
    }
    friend bool operator != (const Person& p1, const Person& p2) {
        return !(p1==p2);
    }
    //...
};

// **** ENDE Namespace Bsp ********************************

#endif  // PERSON_HPP