Ergebnis 1 bis 5 von 5
  1. #1
    Gesperrt
    Registriert seit
    19.07.2008
    Beiträge
    251

    Standard return 0, return 1

    Code:
    #include <iostream>
    using namespace std;
    
    class KONTO
    {
          private:
          int KONTOSTAND;
          
          public:
          int WERT_AENDERUNG(int);
          int KONTOSTAND_LESEN();
    };
    
    int KONTO::WERT_AENDERUNG(int EINGABE) {
        if ((EINGABE>=0)&&(EINGABE<=100000)) {
           KONTOSTAND=EINGABE;
           return(1);
           }
           return(0);
    }
    
    int KONTO::KONTOSTAND_LESEN()
    {
        return (KONTOSTAND);
    }
    
    int main()
    {
        KONTO TESTKONTO;
        TESTKONTO.WERT_AENDERUNG(0);
        
        int ALTERNATIVE, WERT=0;
        
        cout << "K O N T O V E R W A L T U N G" << endl;
        do {
            cout << "1 = KONTOSTAND AENDERN" << endl;
            cout << "2 = KONTOSTAND LESEN" << endl;
            cout << "0 = Ender der Akton" << endl << endl;
            cout << "Ihre Wahl: ";
            cin >> ALTERNATIVE;
            
            switch (ALTERNATIVE) {
                   
                   case 1: cout << "Neuer WERT: ";
                           cin >> WERT;
                           if (TESTKONTO.WERT_AENDERUNG(WERT))
                           cout << "WERT geaendert." << endl << endl;
                           break;
                   case 2: cout << "Aktueller WERT: ";
                           cout << TESTKONTO.KONTOSTAND_LESEN() << endl << endl;
                           break;
            }
            } while (ALTERNATIVE != 0);
        
        system("pause");
        return 0;
    }
    Es geht um die Methode WERT_AENDERUNG(int), return gibt ja einen Wert an die Funktion WERT_AENDERUNG(int) zurück. Was bedeutet diese 1 oder die 0 nach return? Und warum die runden Klammern, in der main is ja bei return 0 auf keine Klammer um die 0.

    2. Frage: Was genau ist ein Kontruktor, Destruktor? Also jetzt nicht irgendwo copy&paste sondern mit eigenen Worten erklärt.
    Geändert von REFLΞX (17.07.2010 um 16:31 Uhr)

  2. #2
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Hey,

    int KONTO::WERT_AENDERUNG(int EINGABE)

    WERT_AENDERUNG ist vom Typ Integer, d.h. eine Ganzzahl muss zurückgegeben( = Returned ) werden.
    In diesem Beispiel wird eine 1 zurückgegeben, wenn es geklappt hat, und eine 0, falls es nicht geklappt hat.

    Die Klammern sind Optional.

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  3. #3
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    int KONTO::WERT_AENDERUNG(int EINGABE) {
    ==> es wird ein int (Ganzzahl) zurückgegeben.

    Das Argument nach return ist eben der Wert, der zurückgegeben wird. Beim Aufruf der Funktion kann man diese dann ähnlich wie eine Variable in Ausdrücken und Zuweisungen verwenden. Dabei steht der Funktionsaufruf einfach ausgedrückt für den zurückgegebenen Wert.

    Mit dem return (0) bzw. return (1) wird halt 0, respektive 1 zurückgegeben.
    return ist ein Sprachkonstrukt und keine Funktion o.ä. . Hier sind die Klammern optional - d.h. können, müssen aber nicht geschrieben werden.

    Beispiele:
    return 0; // ist erlaubt
    return (0); // ist auch erlaubt
    return ((0)); // ist ebenso erlaubt
    return(0); // auch korrekt


    P.S.: wieso sind diese Alten Hacker immer schneller?

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  4. #4
    CIH-Virus Avatar von krusty
    Registriert seit
    12.10.2008
    Beiträge
    445

    Standard

    die Funktion überprüft etwas...
    sie überprüft, ob Eingabe größer oder gleich 0 ist und kleiner oder gleich 100000 ist.
    wenn das der Fall ist, dann gibt sie zurück, andernfalls 0.
    Die Klammern sind nicht wichtig, man kann (glaube ich) jeden ausdruck in klammern setzen, (45 + 34) + (33 + 35) ist das selbe wie 45 + 34 + 33 + 35.

    In C++ steht 0 für falsch und alles andere für wahr, das ganze kommt aus C, wenn ich micht nicht irre.
    Wenn der Benutzer seinen Kontostant ändern möchte, dann gibt er eine Zahl ein, die zwischen 0 und 100000 liegen muss
    if (TESTKONTO.WERT_AENDERUNG(WERT)) übrtprft, ob die AENDERUNGs Funktion das zulässt. Wenn die AENDERUNGs FUnktion 1 zurück gibt, dann lief alles reibungslos und cout << "WERT geaendert." << endl << endl; wird ausgeführt.

    hoffe das war soweit richtig.

  5. #5
    OpCodeKiddy Avatar von EBFE
    Registriert seit
    30.03.2009
    Beiträge
    442

    Standard

    In C++ wurde eigentlich ein echter "bool" Typ eingeführt.
    Die C-"Machart" mit 0 und 1 ist i.R eher überflüssig und umständlich .
    Zu der Verwendung: Da C keine Exceptions und andere Fehlerbehandlungsroutinen hatte, hat man sich mit Returnwerten geholfen, um Fehler irgendwie zu registrieren/zu merken.
    Z.B findet man in der WinAPI Dokumentation sehr oft den Satz "Rückgabewert: ungleich 0, falls erfolgreich, gleich 0, falls xyz Fehler. Um genauen Fehlercode zu erhalten, rufen Sie GetLastError Funktion auf".
    Dieses System hat alledings deutliche Nachteile - man kann damit weder den genauen Fehler signalisieren, noch überall anwenden (z.B hier:
    Code:
    int KONTO::KONTOSTAND_LESEN()
    {
        return (KONTOSTAND);
    }
    würde man mit diesem System nicht prüfen können, ob ein Fehler auftrat oder das Konto ganz "legal" einen 0-Euro Stand hatte. Hier kommen Exceptions ins Spiel - damit kann man die Fehler sowohl direkt "melden" wie auch Abfangen, ohne über Umwege zu gehen.

    Auch wenn C++ nicht zu meinen Favoriten gehört: ich würde mir an deiner Stelle aus oben erwähnten Gründen (C-like 0 und 1 statt "true/false", keine Exceptionsnutzung, schlechte Codeformatierung, von Namingconventions ganz zu schweigen - normalerweise werden nur Konstanten großgeschrieben) was anderes zum Lernen suchen


    zu Konstruktor/Destruktor:

    z.B:
    du hast hier eine Klasse KONTO. Das ist quasi der Bauplan, wie eine Konto-Struktur aussieht - und macht an sich erstmal nix. Anders gesagt: die Klasse ist erstmal nichts konkretes, sondern eine Beschreibung für eine Struktur.

    Mit KONTO TESTKONTO wird zur Laufzeit eine Instanz der Klasse KONTO erzeugt. Andersgesagt (nicht so abstrakt): es wird ein Object erzeugt, der das in "KONTO" beschriebene Verhalten aufweisen soll == d.h das ist schon etwas konkretes.

    Ein Konstruktor ist nun nach Vereinbarung eine Funktion, die bei der Erstellung des Objects mitausgeführt wird. Kannst es ein bisschen mit der Main() Funktion im Code vergleichen. Jedesmal wenn eine Instanz einer Klasse XYZ erstellt wird, wird diese "Konstruktor" Funktion ausgeführt. Darin kann der Programmierer nun alles mögliche machen (sichergehen, dass bestimmte Ressourcen geladen wurden, irgendwelche Variablen initialisieren usw.)
    Destruktor ist das Gegenstück zu Konstruktor - wenn ein Object "zerstört" wird, wird quasi nach "Vereinbarung" diese Funktion ausgeführt. Hier sollten im wesentlichen dann Ressourcen/Speicher freigegeben werden.

    Such dir einfach ein Beispielcode mit Konstruktor/Destruktor:
    http://www.cpp-tutor.de/cpp/le10/ctor_dtor.html
    dann sollten einige Fragen sich erledigen.

    PS/EDIT: meine Konstruktorbeschreibung ist im Übrigen eher allgemein gehalten und nicht C++ spezifisch (was aber nicht wirklich viel aus machen sollte )
    Geändert von EBFE (17.07.2010 um 17:45 Uhr)
    TrueCrypt/RAR/Zip Passwort vergessen und das Bruten dauert ewig? Oder brauchst du fein abgestimmte Wortlisten? Hilf dir selbst mit WLML - Word List Markup Language
    Gib Stoned/Mebroot/Sinowal und anderen Bootkits keine Chance: Anti Bootkit v 0.8.5

Ähnliche Themen

  1. Hooligans 3 Return of the Major FAKE or REAL ?
    Von Insanity im Forum Videos, Filme & Serien
    Antworten: 8
    Letzter Beitrag: 25.09.2010, 13:31

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •