Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hi,

kann mir jmd von euch erklären, worin der techn. unterschied liegt, wenn ich eine methode innerhalb einer klasse oder außerhalb einer klasse definiere.

und wann ist es sinnvoll methoden innerhalb einer klasse zu definieren.

danke korea1

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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.)

Geschrieben

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

Geschrieben

Wenn ich die Funktion in der Klassendefinition definiere, wie ich oben schrieb, darf der Compiler (der Compiler interessiert mich wie immer nicht, sondern nur der Standard) das.

Bis denn dann

Jan

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