Eine Klasse besteht aus zwei Dateien?



  • Hallo Leser,

    wenn ich eine neue Klasse hinzufüge, werden zwei Dateien erzeugt. Kann mir jemand erklären, wieso zwei Dateien erzeugt werden und was das soll?

    Klassenname.h

    #pragma once
    
    class Klassenname
    {
    public:
    	Klassenname(void);
    	~Klassenname(void);
    };
    

    ...und...

    Klassenname.cpp

    #include "StdAfx.h"
    #include ".\klassenname.h"
    #using <mscorlib.dll>
    
    Klassenname::Klassenname(void)
    {
    }
    
    Klassenname::~Klassenname(void)
    {
    }
    

    Was ich nicht verstehe ist, wieso die Klassenname.cpp nötig ist, ich hätte den Inhalt meiner Klasse in die Header-Datei geschrieben. Und wieso gibt es da "Klassenname" und "~Klassenname"?

    Vielen Dank für die Hilfestellungen 🙂

    Liebe Grüße



  • Deklaration und Definition der Klasse!
    Aber des ist typisch C++ und keine .Net Problematik.
    Und wenn du net weißt was Konstruktor und Destruktor sind, solltest du nochmal bei den Grundlagen C++ anfangen.



  • Die Frage gehört zwar eigentlich in das C++ Forum, aber egal :).

    In der Headerdatei steht normalerweise die Deklaration der Klasse, mit allen Membern, Konstruktoren, Methodenprototypen, usw., jedoch aber kein eigentlicher Code. Der wird in die *.cpp Datei geschrieben. Hier ein kleines Beispiel:

    // Inhalt von Test.h
    // includes usw.
    class Test
    {
    public:
        void MachEtwas();    // das ist der Prototyp (Deklaration) der Methode MachEtwas()
    }
    
    // Inhalt von Test.cpp
    // includes usw.
    void Test::MachEtwas() {
        // hier steht schlussendlich der Code, den die Methode ausführt
    }
    

    Grundsätzlich trennt man die Deklaration und den "eigentlichen Code" nur wegen besserer Übersichtlichkeit. Du kannst natürlich auch alles nur in Header- oder *.cpp Dateien schreiben, das sieht dann aber nicht wirklich schön aus und dauert vermutlich länger beim Kompilieren.


Anmelden zum Antworten