Objekt als Rückgabewert
-
class Konto { public: int Guthaben; Konto Casper() { Konto k_Guthaben; k_Guthaben.Guthaben = 300; return k_Guthaben; } };Wäre dieser code so richtig?
-
ja
-
Berzerk schrieb:
Wäre dieser code so richtig?
Für gewisse Grade von richtig: Ja. Technisch korrekt ist er. Aber es sieht nicht gerade so aus, als hättest du das Konzept von Klassen und Objekten richtig verstanden.
-
denke ich auch deshalb schaue ich mir klassen heute nochmal an
-
Was du wohl möchtest ist folgendes:
class Konto { public: int Guthaben; Konto() // Konstruktor { Guthaben = 300; } }; int main() { Konto Casper; std::cout << Casper.Guthaben << std::endl; }
-
Nein

-
Skym0sh0 schrieb:
Nein


Also für mich sieht es stark danach aus als wollte er mit einer Methode den Konstruktor nachbauen. Klar, das
std::cout ...und diemainhabe ich jetzt eingefügt - damit wollte ich zeigen wie er ein Objekt erzeugen und verwenden kann.
-
Ich vermute, dass skym0sho sich darauf bezieht, dass man üblicherweise nicht will, dass Datenmember öffentlich sind, wo jeder an ihnen herumfummeln kann, sondern dass man Klassen ausdrücklich dazu verwendet, Daten eng zu kapseln, damit Client-Code sich nicht mehr darum kümmern muss, dass die ganze Buchhaltung auch tatsächlich passiert.
Wenn ich den Fall mal etwas weiterspinne, könnte ein Interface zum Beispiel so aussehen:
class Konto { public: Konto(int betrag = 0, int dipsokreditrahmen = 0); int guthaben() const; void einzahlen(int betrag); void abheben (int betrag); void ueberweisen(Konto &zielkonto, int betrag); private: int guthaben_; int dispokreditrahmen_; };...das ist jetzt immer noch simplistischer, als ich so einen Fall vermutlich aufziehen würde, aber für die Idee, die ich verdeutlichen will, sollte es reichen.
Mit einer solchen Herangehensweise kannst du sicherstellen, dass jede Änderung des Guthabens bestimmten Regeln entspricht. Du kannst sicherstellen, dass keine negativen Beträge eingezahlt oder ausgezahlt werden, indem du es in den jeweiligen Methoden prüfst. Du kannst garantieren, dass der Kontostand nicht unter den Dispokreditrahmen fällt. Du kannst bei einer Überweisung an eine andere Bank einen Teilbetrag einbehalten. Du kannst das auf die Art auch so erweitern, dass zum Beispiel ab einem bestimmten Kontostand mehr Zinsen gezahlt werden oder eine Benachrichtigung rausgeht, wenn jemand eine Million zusammenhat.
Und du kannst all diese Dinge tun, ohne den Code anfassen zu müssen, der die Konto-Klasse benutzt.
-
Kennt ihr seiten mit guten Tutorials?
-
Berzerk schrieb:
Kennt ihr seiten mit guten Tutorials?
Nein. Aber wir kennen Buchtipps.