frage zu: int&



  • @enno-tyrant: Danke jetzt gehts.

    Nächste Frage std:: (bedeutet standard???) was macht std::???
    PS.:zwei fragen von oben sind noch offen!

    mfg hohesC



  • hohesC schrieb:

    ...Nächste Frage std:: (bedeutet standad???) was macht std::???
    ...

    naja es bedeutet standard 😃

    std ist eine Klasse und genauso wie du funktionen einer 'normalen' klasse aufrufst, rufst du auch die funktionen der klasse std auf.

    klasse::methode

    hohesC schrieb:

    ...zwei fragen von oben sind noch offen!...

    v1 und v2 werden zeiger auf die adresse von wert1 und wert2, sie verändern den inhalt der adresse (sprich die variable selbst und eben keine kopie der variable)



  • v1 und v2 werden zeiger auf die adresse von wert1 und wert2, sie verändern den inhalt der adresse (sprich die variable selbst und eben keine kopie der variable)

    also bekommen Wert1 und Wert2 die adressen von v1 und v2 zugewiesen??? 😕
    oder wird einfach bloß der Inhalt verändert und nicht die Adresse???

    PS: bei klassen bin ich noch nicht! aber ich kanns nachvollziehen!

    mfg hohesC



  • using namespace std;
    

    hab ich grad in nem anderen post gesehen! kann ich mir damit das std:: sparen???
    Was passiert dadurch???

    ich weis ich hab viele fragen 😉

    mfg hohesC(++) 😃



  • für fragen ist das board ja da 😉

    mit 'using namespace std;'

    weißt du deinem compiler an jede funktion die er nicht kennt in den std-namensräumen der include-dateien zu suchen.

    und ja, dadurch kannst du dir jedes 'std::' sparen.

    hohesC schrieb:

    ...also bekommen Wert1 und Wert2 die adressen von v1 und v2 zugewiesen???...

    nein, v1 und v2 bekommen die adresse von wert1 und wert2

    hohesC schrieb:

    ...oder wird einfach bloß der Inhalt verändert und nicht die Adresse???...

    die adresse wird auf keinen fall verändert -> wäre ja schlimm



  • Ich schrieb:

    aber was passiert genau bekommt v1 und v2 die adresse von Wert1 und Wert2 zugewiesn? Ist v1 somit ein Zeiger auf Wert1 und v2 ein Zeiger auf Wert2?

    dann hatte ich ja hier mit recht!

    ok danke mfg hohesC



  • enno-tyrant, du scheinst die Sprachkonzepte selbst noch nicht verstanden haben.

    std ist keine Klasse und if ist keine Schleife. Nicht gut, das den Neulingen einzutrichtern.



  • demzufolge wären bei dir 'struct' oder 'union' auch keine klassen 🙄

    nur weil es nicht mit 'class bla' beginnt.

    schauen wir uns doch mal den aufbau eines namensraumes an:

    namespace util
    {
       int zaehler;
       void sucheAnfang(string s);
       int sucheEnde(string s);
    }
    

    kann mir nicht helfen aber irgendwie erinnert mich das an etwas.

    es sollte einfach nur als vergleich dienen

    und wer sagt das if eine schleife wäre?



  • Er hat doch nicht von if schleife gesprochen(oder ist das aus einem andern Thread?), ich wüsste ausserdem selber das if nix mit schleifen zu tun hat.
    Ich bin nur C++ neuling aber nicht programmier neuling, da ich in C Programmiere!

    was ist std:: dann kan das mir jetzt irgendwer verklickern?

    mfg hohesC



  • ich bin ja nichtmal der einzige der klassen und namensräume zum vergleichen/erklären nimmt

    http://www.willemer.de/informatik/cpp/cppnames.htm schrieb:

    Einzelfunktion
    Die Funktion sucheEnde() wurde nicht in der Datei util.cpp definiert. Wenn sie an anderer Stelle implementiert wird, kann der zugehörige Namensraum auch so gekennzeichnet werden, wie es bei Elementfunktionen von Klassen gemacht wird.



  • Sie damit zu erklären ist was anders als zu behaupten sie wären es. Ich sag dir ja auch nicht dass ein Fahrrad ein Auto ist nur weil's auf der Straße fährt.

    http://www.c-plusplus.net/forum/viewtopic.php?p=720341#720341



  • enno-tyrant schrieb:

    demzufolge wären bei dir 'struct' oder 'union' auch keine klassen 🙄

    nur weil es nicht mit 'class bla' beginnt.

    schauen wir uns doch mal den aufbau eines namensraumes an:

    namespace util
    {
       int zaehler;
       void sucheAnfang(string s);
       int sucheEnde(string s);
    }
    

    kann mir nicht helfen aber irgendwie erinnert mich das an etwas.

    es sollte einfach nur als vergleich dienen

    und wer sagt das if eine schleife wäre?

    Nein, ist keine Klasse, sondern ein Namespace. Steht doch da?! Nur weil ein Motorrad und ein Fahrrad auch zwei Räder haben, sind sie doch nicht das gleiche Ding, oder?

    Das deine Beispiele "gleich" aussehen und an etwas erinnern, hat sicherlich damit zu tun, das es etwas mit Compilerbau zu tun hat um leichter den Code zu parsen. Man kann ja nicht für jeden Mist eine neue Syntax einführen, ganz davon abgesehen, das man als Programmierer sich den Mist auch noch merken müsste.

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



  • ach den thread hast du gemeint, war beim schreiben wohl mit den gedanken woanders 🙄

    und was heißt ich behaupte es wäre eine klasse? hast du den gesamten thread gelsen? zugegeben ich hatte mich etwas unverständlich ausgedrückt aber zu verstehen war es dennoch



  • @endline er hat seine "if-schleife" korigiert 😃 😉

    http://userpage.fu-berlin.de/~ram/pub/pub_w33d45lg/c++_namensraum_de

    ich google nächstes mal einfach! :p

    mfg hohesC



  • Alles, aber hauptsache nicht den eigenen Fehler eingestehen. Mann, du bist doch auch nur ein Mensch.



  • 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