Zum Inhalt springen

methodendefinition


korea1

Empfohlene Beiträge

Das macht so wiet ich weiß keinen technischen Unterschied. Mann macht das nur

wegen der Übersichtlichkeit oder zum Schutz des Quellcodes.

Du könntest z.b. eine Klasse in einer Headerdatei deklarieren und Ihre Methoden

in einer Dll definieren. So könnten andere diese Klasse benutzen, würden aber nicht

sehen wie du sie programmiert hast.

Gruß

Guybrush

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

Methoden gehören eigentlich immer zu einer Klasse, von daher verstehe ich nicht den Unterschied zwischen "innerhalb" und "ausserhalb". Oder bezieht sich die Frage auf die Implementierung direkt im class Konstrukt (Header-File) vs. Implementierung in einer eigenen Datei/C++-File?

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

ups man sollte den codeschnipsel von oben auch einfügen :D


class goofy
{
protected:
int st[100];
int t;
public:
goofy(){t = 0;};
void drauf(int x) {st[++t] = x;}
int runter(void){return st[t--];}
};
[/PHP]

die frage kam von unserem lehrer und siehe codeschnipsel oben, damit ist gemeint innerhalb der klasse und außerhalb würde lt. ihm so aussehen:

[PHP]
class fahrzeug{
private:
int wert;
protected:
fahrzeug();
void wert_eingeben (void)
~fahrzeug();
};

fahrzeug::fahrzeug(void)
{
// Konstruktor
}
void fahrzeug::daten_eingeben(void)
{
cout << "wert eingeben:";
cin >> wert;
}

fahrzeug::~fahrzeug(void)
{
// Destruktor
}

ist das jetzt verständlich? jetzt wurden die methoden außerhalb der klasse definiert.

das alles befindet sich aber nach wie vor in einem headerfile.

korea1

Link zu diesem Kommentar
Auf anderen Seiten teilen

Technisch macht es wohl keinen Unterschied. Es ist einfach Übersichtlicher da man in der Deklaration der Klasse leichter einen Überblick findet.

Hinzu kommen die punkte die bereits genannt wurden, der eigentliche Code kann bei Trennung in libs obj dll oder sonstwo gehalten werden.

(Ausnahme sind templates, hier muß der Compiler die Definition zur Compilezeit kennen.)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo!

Funktionen, die in der Klassendefinition definiert werden, werden, wenn möglich, als inline übersetzt.

Stichwort inline: An den Stellen, wo die Funktion aufgerufen wird, wird kein Funktionsaufruf gemacht, sondern der Compiler schreibt den Code der Funktion gleich dorthin. Man spart sich die Kosten für den Funktionsaufruf. Interessant für Erbsenzähler :-) und Funktionen die in einer Schleife immer wieder aufgerufen werden.

Stichwort "wenn möglich": Die Funktion darf nicht zu komplex sein. Wenn die Funktion zum Beispiel eine for-Schleife enthält, wird sie nicht als inline expandiert.

HTH

Jan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...