frage zu: int&



  • enno-tyrant schrieb:

    und was heißt ich behaupte es wäre eine klasse? hast du den gesamten thread gelsen?

    enno-tyrant schrieb:

    std ist eine Klasse

    Hört sich für mich ziemlich eindeutig an. 😉

    hohesC schrieb:

    und warum eigentlich "int&" <-hat bestimt was mit zeigern zu tun

    Nicht wirklich. int& ist eine Referenz. Wie ein Compiler sowas implementiert, ist ihm überlassen. Da es wohl am einfachsten ist, werden gängige Compiler sowas über Zeiger realisieren. Du solltest aber auf jedenfall Referenzen und Zeiger logisch trennen. Es gibt jedoch Möglichkeiten, das eine in das andere umzuwandeln ➡ Address Operator, Dereferenzierung

    Was machen nun die Referenzen in deinem Beispiel? Wie du sicherlich weisst, werden Funktionsparameter (Ausnahme Arrays) by-value übergeben

    void foo(int x);
    

    x ist hier eine Kopie des übergebenen Wertes. Alles was du mit x machst, hat keinerlei Einfluss auf die übergebene Instanz. Jetzt kommmt also unsere Referenz ins Spiel.

    void foo(int& x);
    

    Damit "erzeugst" du praktisch ein Alias, x ist somit die übergebene Instanz selbst. Damit hast du also die Möglichkeit, diese auch zu verändern (sofern nicht const übergeben). Referenzen haben zudem auch noch andere Vorteile. So sollte man zB grosse Strukturen immer per Referenz übergeben, damit spart man sich das Erstellen der Kopie auf dem Stack.
    Für mehr Infos würde ich dir empfehlen, ein gutes Tut über Referenzen durchzuarbeiten.

    an die Mods:
    Wieso gibt es in den FAQs kein Topic "Referenzen - was ist das"? 🙂



  • //edit hmm da war wohl nochn altes fenster auf Oo irgendwie ein paar stunden zu spät^^

    //edit2 so muss dem post ma nen neuen sinn geben

    Also, namespaces sind keine Klassen. Man kann sie auch nicht instanzieren, wie Klassen. Somit ist deine Argumentation schon mal hinfällig.

    und noch ein punkt:

    class Foo{
        //...
    };
    
    using namespace Foo;
    
    int main(){
        //...
    }
    
    test.cpp:5: error: expected namespace-name before ';' token
    test.cpp:5: error: `<type error>' is not a namespace
    

    hmm wenn uing nicht klappt, kann std auch keine klasse sein


Anmelden zum Antworten