Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Welche Methoden werden im Header implementiert?

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.12.2005
    Ort
    Ebern
    Beiträge
    19

    Welche Methoden werden im Header implementiert?

    Hi!

    Ich hab seit kurzem angefangen mich mit c++ auseinanderzusetzen, und hab natürlich auch gleich ein paar Fragen an euch.

    Welche Methoden einer Klassendeklaration werden im Header implementiert und welche nicht? Ist eine Methode im Header automatisch als inline deklariert?

    Vielen Dank für eure Antworten auf meine noob Fragen. :-)

    MfG
    Geändert von miracoli (23-05-2007 um 13:44 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Welche Methoden werden im Header implementiert und welche nicht?
    Das kann ich nicht erschöpfend beantworten. Soviel sei gesagt: Du kannst dir im Prinzip aussuchen welche Funktionen du im Header definierst. Dabei solltest du beachten, dass mehr Code in Headern gewöhnlich die Zeit die zum Kompilieren gebraucht wird erhöht, denn der Code muss ja jedesmal vom Compiler analysiert werden, wenn der Header benutzt wird. Außerdem führt das Definieren von Funktionen in Headern tendenziell dazu, dass Benutzer des Headers abhängiger von Implementierungsdetails werden (Beispiel: Eine Funktion benutzt intern eine Schnittstelle zum Dateisystem. Wird diese Funktion in einem Header implementiert, dann sehen Benutzer des Headers auch diese Schnittstelle).
    Wenn die Definition im Header ist, dann sieht natürlich auch der optimierende Teil des Compilers jedesmal die Funktion und kann unter Umständen daraufhin optimieren.

    Ist eine Methode im Header automatisch als inline deklariert?
    Nein. Aber eine Methode die du in der Klassendefinition definierst ist automatisch inline.

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.09.2005
    Beiträge
    66
    Allerdings wirst du mit einer Header-Funktion, die nicht inline ist schnell Probleme bekommen.
    Jede Datei die den Header verwendet, bindet nämlich den Header ein als ob du die Funktion in die Datei kopiert hättest.
    Wenn die Header-Funktion dann nicht inline ist oder zufällig aus einem anderen Namespace heraus eingebunden wir, wird die Funktion mehrfach definiert und es gibt einen Linkerfehler.

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.12.2005
    Ort
    Ebern
    Beiträge
    19
    Danke für die Antworten! Wie haltet ihr es persönlich mit dem Header? Implementiert ihr überhaupt eine Funktion im Header?

    MfG

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ich mache das ausschliesslich für simple get- und set-Funktionen (d.h. solange die wirklich *nur* set/get sind).

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •