www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

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
Dt. Schulen im Ausland: Mathe-Seiten:

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.vorhilfe.de