using namespace std



  • Hallo,

    warum schreiben hier alle im Forum std::cout usw. statt using namespace std; am
    Anfang? Wozu soll das gut sein? Wozu gibt es denn sonst using namespace? 😕



  • wozu gibts den sonst namespaces??



  • Gegenfrage:
    Wieso setzt du Namespaces mit using namespace ... ausser Kraft?

    Troll 🙄



  • Ah! Jetzt habe ich mir auch noch mal den Abschnitt über namespaces in meinem
    Buch durchgelesen.

    Ab sofort werde ich meinen Programmierstil ändern!

    #include <iostream>
    
    int main()
    {
       std::cout<<"Hello World!\n";
       return 0;
    }
    

    😃



  • The-Kenny schrieb:

    Wieso setzt du Namespaces mit using namespace ... ausser Kraft?

    Wie denn außer Kraft setzen? Abgesehen davon, dass es Tipparbeit spart, kann ein using an der richtigen Stelle eine Menge flexibler machen.

    Beispiel:

    #include <string>
    using std::string;
    
    string Foo( const string& s )
    {
    	string p = s + " World";
    	return p;
    }
    

    Jetzt willst du eine String-Klasse mit eigenem Allokator oder die alles mitloggt oder aus Prinzip eine andere als die der STL oder oder oder:

    #include "OtherString.h"
    using Other::string;
    
    // Bleibt gleich:
    string Foo( const string& s )
    {
    	string p = s + " World";
    	return p;
    }
    


  • Badestrand,

    Dein Beispiel "zieht nicht", weil es hier um

    The-Kenny schrieb:

    ...using namespace ......

    geht.
    (Außerdem würde Dein Beispiel mit "using namespace" genauso funktionieren :D)

    Gruß,

    Simon2.



  • Bleibt immer noch das (subjektive) Argument, dass std::map<std::string,std::string> wesentlich unschöner aussieht als map<string,string> :p

    Simon2 schrieb:

    (Außerdem würde Dein Beispiel mit "using namespace" genauso funktionieren :D)

    Ja, das sehe ich ein 😃



  • umfg schrieb:

    warum schreiben hier alle im Forum std::cout usw. statt using namespace std; am Anfang? Wozu soll das gut sein? Wozu gibt es denn sonst using namespace?

    Es ist wie mit Süßigkeiten. Solange man nicht übertreibt (und sich vor allem auch an die Regel hält: Niemals using namespace in Headern einzusetzen) sind sie nicht schädlich. Man muss nur wegen Namenskonflikten aufpassen...

    cu André



  • Vieles was hier im Forum gepostet wird wird von Neulingen oft 1:1 uebernommen. Da ein using namespace aber niemals in headern und auch niemals vor #includes in Implementationsfiles auftauchen sollte, wird das in den Beispielcodes oft weggelassen, damit eben jenen Neulingen, die das noch nicht wissen, keine schwer zu diagnostizierenden Fehlerquellen "untergeschoben" werden.



  • Badestrand schrieb:

    Bleibt immer noch das (subjektive) Argument, dass std::map<std::string,std::string> wesentlich unschöner aussieht als map<string,string> :p

    Das hat mit subjektiv nix zu tun, es ist schlicht und ergreifend unleserlich. In Codedateien spricht überhaupt nichts gegen den Einsatz von 'using namespace', wenn man aufpasst, dass es nicht zu Namenskonflikten kommt.

    Ich verstehe auch nicht, inwiefern das Namensbereichen widersprechen oder diese grundsätzlich außer Kraft setzen sollte. Man muss auch nicht päpstlicher sein als der Papst. In .NET und Java ist das übrigens auch gang und gäbe und ich sehe nicht, wieso hierfür in C++ etwas anderes gelten sollte.



  • Konrad Rudolph schrieb:

    ...In Codedateien spricht überhaupt nichts gegen den Einsatz von 'using namespace', wenn man aufpasst, dass es nicht zu Namenskonflikten kommt....

    ... die (und das sind für mich die wesentlichen Argumente)
    a) nur auftauchen können, wenn man sowieso gerade an dieser Datei arbeitet und
    b) sich dann auch lokal (also ausschließlich in der "Codedatei") lösen lassen.

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Konrad Rudolph schrieb:

    ...In Codedateien spricht überhaupt nichts gegen den Einsatz von 'using namespace', wenn man aufpasst, dass es nicht zu Namenskonflikten kommt....

    ... die (und das sind für mich die wesentlichen Argumente)
    a) nur auftauchen können, wenn man sowieso gerade an dieser Datei arbeitet und
    b) sich dann auch lokal (also ausschließlich in der "Codedatei") lösen lassen.

    Genau das meine ich.



  • Konrad Rudolph schrieb:

    ...
    Genau das meine ich.

    Dachte ich mir schon ... aber für die weniger Erfahrenen wollte ich das mal explit aufschreiben.

    Gruß,

    Simon2.


Anmelden zum Antworten