Warum funktioniert das??



  • #include <iostream>

    using namespace std;

    class beispiel
    {
    public:
    int funktion()
    {
    cout<<"ich funktioniere\n";
    }
    };
    int main()
    {
    beispiel a;
    a.funktion();

    return 0;
    }

    ------------------------------------

    #include <iostream>

    using namespace std;

    class beispiel
    {
    public:
    beispiel funktion()
    {
    cout<<"ich funktioniere\n";
    }
    };
    int main()
    {
    beispiel a;
    a.funktion();

    return 0;
    }

    warum funktioniert das beides? ich habe die schreibweise unten noch nie gesehen.
    ist das tatsächlich nur eine andere schreibweise oder hat das eine nähere bedeutung?



  • Ach, ein Ratespiel. Warum auch sollte man irgendein Wort über den Unterschied verlieren, wenn die anderen doch suchen können.

    Beides ist undefiniertes Verhalten, da die Funktionen keinen Wert zurück liefern.

    Und was überrascht dich an "beispiel" als Returnwert einer Funktion?



  • Falls es dir um das beispiel funktion() geht: Das ist dann eine Funktion die eben nicht int returned, sondern ein Objekt vom Typ beispiel . In dem konkreten Beispiel fehlt in funktion() beide Male aber ein entsprechendes return und das Programm hat damit undefiniertes Verhalten (aka kompiliert zwar, ist aber dennoch falsch).



  • Na toll, Ratespiele von Leuten, die nicht mal fähig sind ihren Code zu formatieren. Mag ich besonders.



  • dot schrieb:

    Falls es dir um das beispiel funktion() geht: Das ist dann eine Funktion die eben nicht int returned, sondern ein Objekt vom Typ beispiel . In dem konkreten Beispiel fehlt in funktion() beide Male aber ein entsprechendes return und das Programm hat damit undefiniertes Verhalten (aka kompiliert zwar, ist aber dennoch falsch).

    aso ja alles klar dann weiss ich bescheid. das wollte ich wissen ,weil ich mir zuerst dachte,dass es sich dabei nur um eine andere formulierung o.ä. handelt.

    danke für deine gescheite antwort:)


Log in to reply