Klassen Object Funktion zuweisen Frage
-
HI Leute,
ich hab ne frage, kann ich einem object einer klasse nachdem ich sie erstellt habe eine funktion zuweisen?also ich schreibe ne klassen:
sie heißt z.b.class rechnerdiese klasse enthält auch ein paar funktionen etc.
nun erstelle ich halt zwei object dieser klasse:rechner rechner1, rechner2;kann ich nun irgentwie machen das ich einer leerenfunktion von rechner in rechner1 z.b. a+b gebe und der von rechner 2 a+b+c+d ? also nach dem motto :
rechner1.leerfunk(int a, int b){ return a+b; } rechner2.leerfunk(int a, int b, int c, int d){ return a+b+c+d; }Mfg MrHut
-
na klar...
Das Ganze nennt sich Überladen.
Das heißt du deklarierst die Methode in deiner Klasse mit einer anderen Signatur.z.B.:
class rechner { private: ... public: void leerfunk(int a, int b){return a+b} void leerfunk(int a, int b, int c, int d){return a+b+c+d} };dann kannst du auch für verschiedene Instanzen deiner Klassen verschiedene Methoden aufrufen, bzw. die Überladene.
rechner rechner1, rechner2; rechner1.leerfunk(a, b); rechner2.leerfunk(a, b, c, d);
-
wobei das in dem fall etwas doof wäre, da man eifnahc mehrere methoden aufrufe(oder überladene operatoren) aneinander koppeln kann...
-
http://www.cpp-tutor.de/cpp/le12/le12_01.htm#einfuehrung
Überladen von Funktionen in C++
-
MrHut schrieb:
HI Leute,
ich hab ne frage, kann ich einem object einer klasse nachdem ich sie erstellt habe eine funktion zuweisen?kann ich nun irgentwie machen das ich einer leerenfunktion von rechner in rechner1 z.b. a+b gebe und der von rechner 2 a+b+c+d ?
Ja, wobei du dann von jeder Instanz beide Funktionen aufrufen kannst.
In diesem Fall könntest du es auch mit Defaultparametern lösen (wenn 3 Parameter auch erlaubt sind):class rechner { // ... public: void leerfunk(int a, int b, int c = 0, int d = 0); }; void rechner::leerfunk(int a, int b, int c, int d) { return a + b + c + d; }
-
sry ihr habt mich falsch verstanden ^^
ich mein das man die funktion erst später deklariere ...
also wie ich oben schon gesagt habe ...
wenn ich das objekt erstellt habe dann erst deklariere
normal is ja so
class rechner { public: void abc(); }; void rechner::abc { return a + b + c + d; }ich mein halt danach erst deklairern ^^
mfg MrHut
sry kann mich nicht richtig ausdrücken ...
-
Man kann keine Funktionen für Instanzen definieren (deklarieren schon mal sowieso nicht :)), nur für Typen.
-
Ich denke mal, dass er sowas, wie Funktionszeiger haben will.
-
MrHut schrieb:
ich mein das man die funktion erst später deklariere ...
[...]
wenn ich das objekt erstellt habe dann erst deklariereWozu benötigst du denn das? Eventuell wären wie gesagt Funktionszeiger etwas, aber ich hab das Gefühl, das wäre auch einfacher zu lösen

Warum machst du nicht verschiedene Klassen, wenn die Instanzen unterschiedliche Funktionen haben sollen? Oder einfach mehrere Funktionen in der gleichen Klasse?