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.