using namespace std;



  • Hallo,
    in einem C++-Kurs habe ich gelesen, dass man sich bei der Verwendung von 'using namespace std' ueber die Auswirkungen im Klaren sein soll, weil es sonst zu unliebsamen Ueberraschungen und Doppeldeutigkeiten kommen koenne. Leider wird nicht naeher darauf eingegangen, welcher Art diese Ueberraschungen sein koennen.
    Kann mir jemand mehr dazu erzaehlen?
    Und warum ist das so?

    Danke



  • weil du die namen die im namespace std vorhanden sind dann nicht mehr verwenden darfst

    Bsp:
    wenn du den std::string benutzt ohne using... zu schreiben könntest du ne eigene klasse mit dem namen string schreiben

    string str;//deine klasse
    std::string str; //die std klasse

    sobald du using namespace std; schreibst weiss der kompiler bei
    string str; nich mehr welche klasse er nehmen soll

    allerdings kommt sowas eher selten vor
    solange du eher kleine projekte alleine oder mit n paar leuten schreibst isses
    egal ob mit using namespace std; oder ohne



  • das genau ist denn using namespace?
    wieso braucht es dass?



  • using namespace brauchst du nur damit du statt std::string einfach string schreiben kannst



  • echt? danke ich hab das immer umgekehrt gemacht 😃

    using namespace std und dann immer std::string 😃



  • hm aber wo ist denn da der sinn wenn ich using namespace std; mache und dann immer nur string blah; etc.? wo wird dann std verwendet?



  • Hallo

    vielleicht solltest du dich über die generelle Bedeutung von namespace belesen.

    bis bald
    akari



  • jo rat ich dir auch... les ma was drüber



  • wie könnt irh das nicht kurz erklären? 🕶



  • frage2 schrieb:

    hm aber wo ist denn da der sinn wenn ich using namespace std; mache und dann immer nur string blah; etc.? wo wird dann std verwendet?

    sinn und zweck beispiel (nimms bidde ned so 100% wörtlich)

    namespace cdrom_treiber1
    {
      oeffne_laufwerk();
    }
    
    namespace cdrom_treiber2
    {
      oeffne_laufwerk();
    }
    

    programm 1 verwendet nur treiber1

    using namespace cdrom_treiber1;
    oeffne_laufwerk();
    

    programm 2 verwendet beide treiber

    cdrom_treiber1::oeffne_laufwerk();
    cdrom_treiber2::oeffne_laufwerk();
    


  • Sovok schrieb:

    string str;//deine klasse
    std::string str; //die std klasse
    

    sobald du using namespace std; schreibst weiss der kompiler bei
    string str; nich mehr welche klasse er nehmen soll

    std::string str1;
    ::string str2;
    

    oder selber namespace definieren... aber über sinn und unsinn davon lässt sich streiten.


Anmelden zum Antworten