Przykładowo jak masz vector, to nie wiesz czy to jest boost::vector czy std::vector. Wyłączasz też wtedy ADL w pewnym sensie.
Ogólnie przyjmuje się, że "using namespace" jeżeli jest użyty z lenistwa to raczej jest to zła praktyka. Wyjątkiem od tej reguły może być prosty program na 100 linii, gdzie masz same couty.
@bubuch Zła, bo nie odróżniasz wtedy calli z biblioteki standardowej od zwykłych funkcji. Dorzuć do programu jeszcze kilka bibliotek C i masz przepis na katastrofę.
@patrolez: Nie no, widze że cIN ma in, a cOUT ma out. Chodzi o to że w wielu innych językasz ma po prostu print, a tutaj musis jeszcze wpisywać std:: i pamiętac o <<. Nie umiem programować w cpp, ale jak próbowałam się kiedyś tego uczyć to wydawało mi się to irytujące.
@Katiee: A drukujesz coś, że ma być print? std::cout to przekierowanie strumienia na wyjście standardowe wprowadzone przez Unix i nazwa jest zgodna z nomenklaturą wprowadzoną przez ten system. Wyjście standardowe nie musi być przekierowane na terminal, strumień może trafiać do pliku, albo na wejście do innego procesu.
Inne języki, zwłaszcza obiektowe również używają przestrzeni nazw. Skoro wydawało się irytujące to szkoda, że zabrakło determinacji do poznania przyczyny. ;)
@Malkof @SpinOff @tomekb1999 @Katiee @patrolez @Tytanowy Dziękuję za odpowiedzi dopiero rozpoczynam naukę c++ czy to dla mnie to nie wiem tym bardziej, że nie mam nic wspólnego z programowaniem a nawet branżą IT. A pytanie zadałem gdyż w jednym poradniku było z "using name space std" a w drugim poradniku usłyszałem że to bardzo zła praktyka i teraz nie bardzo wiem czy w poradniku w którym
@bubuch To czy w jakimś poradniku kawałek kodu ma using namespace, a to czy to zła praktyka, to dwie różne rzeczy. Ta instrukcja jest przydatna dla początkujących, żeby nie musieli zaprzątać sobie głowy przestrzeniami nazw.
Czasem zła - czasem dobra - zależy co robisz. Jak pisali poprzednicy: czasem możesz doprowadzić do konfliktu przestrzeni nazw - a z drugiej strony możesz nieptrzebnie zaciemiać kod. Osobiście nigdy nie używam "using namespace" do std, ale przy własnych klasach mi się zdarza.
@Tytanowy źle się wyraziłem, chodziło mi o ogólnie o obsługę strumieni w cpp - jest to jedyny mechanizm do formatowania/przekierowywania i ma okropny syntax. Oczywiście pomijając funkcje z C.
czy
std::cout
Podobno używanie tego pierwszego to zła praktyka. Prawda?
#cpp
Przykładowo jak masz vector, to nie wiesz czy to jest boost::vector czy std::vector.
Wyłączasz też wtedy ADL w pewnym sensie.
Ogólnie przyjmuje się, że "using namespace" jeżeli jest użyty z lenistwa to raczej jest to zła praktyka.
Wyjątkiem od tej reguły może być prosty program na 100 linii, gdzie masz same couty.
using std::cout;żeby "wyjąć" z przestrzeni nazw samo "cout" a nie wszystko co tam jest
Character INput => cin
Character OUTput => cout
Character ERRor output => cerr
Inne języki, zwłaszcza obiektowe również używają przestrzeni nazw. Skoro wydawało się irytujące to szkoda, że zabrakło determinacji do poznania przyczyny. ;)
@Tytanowy: też żałuję, bo język bardzo przydatny zapewne
Dziękuję za odpowiedzi dopiero rozpoczynam naukę c++ czy to dla mnie to nie wiem tym bardziej, że nie mam nic wspólnego z programowaniem a nawet branżą IT. A pytanie zadałem gdyż w jednym poradniku było z "using name space std" a w drugim poradniku usłyszałem że to bardzo zła praktyka i teraz nie bardzo wiem czy w poradniku w którym