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 schreibenstring str;//deine klasse
std::string str; //die std klassesobald du using namespace std; schreibst weiss der kompiler bei
string str; nich mehr welche klasse er nehmen sollallerdings 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 sollstd::string str1; ::string str2;
oder selber namespace definieren... aber über sinn und unsinn davon lässt sich streiten.