www.vorwissen.de
Ein Projekt von vorhilfe.de
Das gesammelte Wissen der Vorhilfe
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Teams · Forum · Wissen · Kurse · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Softwaretechnik und Programmierung" - C++ Frage zu Headerdateien
C++ Frage zu Headerdateien < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

C++ Frage zu Headerdateien: Headerdateien
Status: (Frage) beantwortet Status 
Datum: 02:22 Sa 03.01.2009
Autor: farnold

Ich soll eine Header-Datei abc.h schreiben diese soll folgendes enthalten:
–enthält Struktur
–Deklaration von Attributen der Klasse
–Deklaration von Methoden der Klasse

dann soll ich noch eine Source-Datei abc.cpp die die Methoden, Struktur, usw, der HeaderDatei abc.h füllt

wie das ganze geht ist mir klar.
was ist nun aber wenn ich mit der  headerdatei abc.h arbeiten will.
ich erstelle z.B. eine Datei test.cpp in die ich abc.h inkludiere also:
#include abc.h
int main()
{
...
}
wenn ich nun in test.cpp auf eine methode von abc.h zugreifen. geht das dann, ich meine das "innere" der Methode ist ja in abc.cpp gespeichert.
oder weiß abc.h wo der inhalt ihrer methoden, usw. gespeichert ist (nämlich in abc.cpp) und abc.h greift automatisch auf abc.cpp zu?

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.


        
Bezug
C++ Frage zu Headerdateien: Antwort
Status: (Antwort) fertig Status 
Datum: 13:04 Sa 03.01.2009
Autor: Nilandula

Im Prinzip ist deine Vermutung richtig.

Tatsächlich werden die Dateien beim Linken (Teil des Erstellens der ausführbaren Datei) zusammengefügt. Während des Kompilierens wird nur überprüft, ob der Aufruf aus der .cpp Datei zur Signatur der Methode passt. Also ob Rückgabewert und Art und Anzahl der Parameter stimmen. Nach dem Linken verweist der Aufruf dann an die Stelle, an der der Code der Methode als Binärcode gespeichert wurde.

Die Headerdatei dient nur dazu die Signatur einer Methode oder den Aufbau einer Struktur in mehreren cpp Dateien bekannt machen zu können.

Bezug
                
Bezug
C++ Frage zu Headerdateien: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:19 Sa 03.01.2009
Autor: farnold

danke, das heißt also ich kann die methoden der headerdatei abc.h (Methodendefinition wurde in abc.cpp gemacht) in jeder beliebigen *.cpp datei "in vollem umfang" benutzen wenn ich abc.h includiert habe. Natürlich kann ich nur auf das zugreifen "public" ist.

in verbindung mit Klassen hört man immer den Begriff Konstruktor.

Habe ich in einer Klasse keinen Konsturkter festgelegt so erstellt der Compiler von selbst einen "Standardkonstruktor".
Erstelle ich nun aber selbst einen Konstruktor ohne Argumente und initialisiere  einige Attribute im Konstrukorkörper (also in den geschweiften Klammern { ...}, spricht man so auch von einem "Standardkonstruktor" ?

Dann hätte ich noch eine Frage zur Initialisierungsliste.
Habe ich dazu einen Konstruktor z.B.
"Klassenkonstruktor(blabla) : blabla {....}"
ist die Initialisierungsliste nun einfach das was nach dem Doppelpunkte aber vor der geschweiften Klammer steht?

dann habe ich mir noch diesen Satz aufgeschrieben
"Die Attribute, die in der Initialisierungsliste
initialisiert werden, müssen in derselben
Reihenfolge initialisiert werden, in der sie
deklariert wurden"
weiß meinen die mit der "Reihenfolge in der sie deklariert wurden"? Bzw wo deklariert wurden?
Ich versuchs mal anhand eines Beispiels mein Problem deutlich zu machen:

class Hallo
{
int a; // Ist das hier die Reihenfolge der Deklaration?
int b;
public:
Hallo() : a(4) , b(5) // wäre Hallo() : b(5) , a(4) dann falsch da es eine andere Reihenfolge ist, oder meint man mit Reihenfolge etwas anz anderes?
...
};



Bezug
                        
Bezug
C++ Frage zu Headerdateien: Antwort
Status: (Antwort) fertig Status 
Datum: 18:44 So 04.01.2009
Autor: Nilandula

Du kannst die Methode in jeder .cpp benutzen, die zum gleichen Projekt gehört, also im gleichen Build-Vorgang erstellt wird. Willst du sie auch Projektübergreifend nutzen, musst du dir eine .dll bzw eine .lib erstellen.

Ja, der vom Compiler erstellte Konstruktor ist dann immer ein Konstruktor ohne Parameter und ohne Anweisung. Diesen kannst du dann entsprechend deinen Wünschen überladen.

Bei den Initialisierungslisten musst du es nicht in der Reihenfolge aufschreiben, aber beachten, dass es in der Reihenfolge der Deklaration (so wie von dir gekennzeichnet) abgearbeitet wird. Wenn du also Abhängigkeiten voneinadner hast, musst du auf diese Reihenfolge achten und es empfiehlt sich daher auch, es so aufzuschreiben, um die Übersicht zu behalten

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorwissen.de
[ Startseite | Mitglieder | Teams | Forum | Wissen | Kurse | Impressum ]