Class als typ , frage
-
class complex { private: float real, imag; public: complex(float r=0; float i=0; ) { real=r; imag=i; }; float getReal() { return real; }; float getImag() { return imag; }; void setReal(float r) { real=r; }; void setImag(float i) { imag=i; }; complex produkt(complex f); } //class complex complex complex::produkt(complex f) { complex ergebnis(real*f.real-imag*f.imag,real*f.imag+imag*f.real); return ergebnis; }Diese letze Zeile , also diese funktion , ich verstehe nicht wie eine klasse ein typ sein kann , ich jann mir da runter nichts vorstellen .
Also ich weiss dass eine funktion ein void,int,char ,... typ sein kann doch eine klasse als typ .
Wie kann ich mir dass vorstelen , bitte ein beispiel ????!!!!!!!
-
Der Typ einer Funktion ist auch nur das was sie zurückgibt (ich würde hier sowieso nicht Typ sondern Rückgabetyp sagen). Warum sollte sie keine Instanz einer Klasse zurückgeben?
-
Ich verstehe nicht ganz dein Problem. Eine Klasse ist nunmal nichts anderes als ein selbstdefinierter Typ.
Also ich weiss dass eine funktion ein void,int,char ,... typ sein kann
Das zeigt eher, dass du Verständnisprobleme mit Funktionen hast, denn der Satz ist Unsinn. Eine Funktion hat einen Rückgabetyp bzw. Parameter, die wiederum einen Typ haben. Und das kann zB einer von den von dir genannten Typen sein. Aber eine Funktion ist _kein_ Typ (wobei eine Funktionssignatur trotzdem als Typ eingesetzt werden kann). Vielleicht solltest du im Tutorial deiner Wahl nochmal das Kapitel über Funktionen anschauen.
-
Habe es nicht kapiert
Lightning
Bitte einklareres beispielDanke im voraus
-
funktionen sind das, was du (hoffentlich ;)) aus der mathematik kennst. sie besitzen ein paar parameter, eine funktionsdefinition und liefern einen wert zurück.
beispielsweise die funktion f(x) = x^2 mit x aus den reellen zahlen. die erwartet eine reelle zahl als parameter, quadriert diese und liefert das ergebnis zurück. auch als reelle zahl.
nun gibs aber nicht nur reelle zahlen. es gibt auch rationale, natürliche, komplexe, ganze zahlen usw.
wär aber langweilig, wenn funktionen in programmiersprachen nur solche simplen zahltypen liefern könnten.
deshalb kann man sich eigene "typen" definieren. zum beispiel einen mensch-typ
struct Mensch;
und dieser mensch-typ hat zwei attribute: geschlecht und name.
struct Mensch
{
char *name;
bool geschlecht; // wir gehen mal davon aus, dass es wirklich nur zwei geschlechter gibt
};und jetzt spiel ich gott und bau mir eine funktion machMensch!
Mensch machMensch(char *name, bool geschlecht)
{
Mensch prototyp;
prototyp.name = name;
prototyp.geschlecht = geschlecht;
}die kann ich nun verwenden, um mir einen menschen zu basteln. ist sonst auch viel zu anstregend, die ganzen leute von hand zu bauen, ist ja eh immer dasselbe.
Mensch eva = machMensch("eva", 1);
Mensch adam = machMensch("adam", 0);und die menschheit verdankt ihre existenz einer for-schleife.
-
und da auch gott nicht unfehlbar ist... es muss natürlich
Mensch machMensch(char *name, bool geschlecht)
{
Mensch prototyp;
prototyp.name = name;
prototyp.geschlecht = geschlecht;
return prototyp;
}heissen.
-
Pointerman danke ich glaube es gibt keine bessere erklärung als diese , alles verstanden , danke für deine hilfe.
Lightning