Unterschied zwischen "deklaration" und "definition".



  • *hmpf*

    Überall wird das anders beschrieben 😞

    Brauche daher eine 100% richtig Antwort 🙂



  • Deklaration: von lat. Deklarieren, etwas "ausrufen", heutzutage benutzt im Sinne von "etwas publizieren, bekannt machen".
    Wenn du z.B. eine Klasse deklarierst, schreibst du ihren Code in eine .h Datei(OK, muss nich sein aber in eine Headerdatei is immer besser), sodass der Precompiler weiß wie die Klasse "aussieht".

    Nehmen wir mal z.B. die folgende Beispielklasse:

    class Cat {
          int iWeight;
    public:
          void eat();
    }
    

    Das ist eine Katze die nur ein Gewicht hat. Kein Gesicht keine Körperform, nichts nur das Gewicht 😃 .
    Und wir haben eine Methode eat() deklariert, das heißt der Precompiler sucht dann nach dem zu eat() dazugehörogen Code.
    Also die sozusagen "Erwähnung" dass es "etwas" gibt ist die Deklaration.

    Die Definition von eat() ist dann einfach die Codezuweisung:

    void Cat::eat()
    {
         iWeight++;
    }
    


  • Hallo,
    Deklaration: Ein C++ Konstrukt, dass einen Namen in einem Scope bekannt macht.
    Definition: Eine Deklaration die neben dem Namen auch die Details der deklarierten Einheit bekannt macht. Für Variablen bedeutet dies, dass Speicher für die Variable belegt wird. Für Klassen und Funktionen wird eine Deklaration zu einer Definition, wenn ein in {}-Klammern eingeschlossener Körper folgt.

    Ganz genau findest du die Definition im Standard Abschnitt 3.1.
    Als Final Draft hier:
    http://www.kuzbass.ru/docs/isocpp/basic.html



  • Für Klassen und Funktionen wird eine Deklaration zu einer Definition, wenn ein in {}-Klammern eingeschlossener Körper folgt.

    Wäre danach nicht aber
    [cpp]
    class A
    {
    [...]
    }
    [/cpp]
    auch eine Definition?



  • Mis2com schrieb:

    Für Klassen und Funktionen wird eine Deklaration zu einer Definition, wenn ein in {}-Klammern eingeschlossener Körper folgt.

    Wäre danach nicht aber
    [cpp]
    class A
    {
    [...]
    }
    [/cpp]
    auch eine Definition?

    Mal von dem fehlenden Semikolon abgesehen, *ist* das eine Definition.
    Nämlich eine Klassendefinition.

    Eine Klassendeklaration sieht so aus:

    class Foo;
    

    Insofern hat Herr der Dinge mit der Ausssage:

    Wenn du z.B. eine Klasse deklarierst, schreibst du ihren Code in eine .h Datei(OK, muss nich sein aber in eine Headerdatei is immer besser), sodass der Precompiler weiß wie die Klasse "aussieht".

    unrecht. Was du für gewöhnlich in die h-Datei schreibst ist eine Klassendefinition.
    Nebenbei: Wer ist der Precompiler? Ich kenne nur den Präprozessor und dem ist es wurscht wie eine Klasse aussieht.



  • Ja verzeihung dass ich lebe, ich werde dir, meinem neuen Gott sofort eine Herde Schafe opfern!



  • So einer schon wieder ...



  • 🙂



  • Ich bin Euch wirklich verflucht Dankbar für die Infos, nur könnt Ihr das auch irgendwie in 2 oder 3 Sätzen erklären???

    Ist für ein Anfänger ein wenig leichter 🙂



  • Deklaration: Erwähnung dasses deine Klasse/Funktion gibt
    Definition: Ihr einen "Körper" zuweisen



  • Herr der Dinge schrieb:

    Deklaration: Erwähnung dasses deine Klasse/Funktion gibt
    Definition: Ihr einen "Körper" zuweisen

    Wenn ich das richtig verstanden habe, heisst das, dass

    Deklaration = erstellen

    und

    Definition = Werte zuweisen

    richtig?



  • Nein. Mit deiner Terminologie: Deklaration = Bekanntmachen, Definition = Erstellen, Initialisierung = Anfangswertzuweisung.



  • ich möchte noch darauf hinweisen, das eine Variable mit

    extern int i;
    

    deklariert, und dann mit

    int i;
    

    definiert wird.

    Mit einem blossen

    int i;
    

    wird deklariert und definiert.


Anmelden zum Antworten