kzen.dev
  • Frågor
  • Taggar
  • Användare
Meddelanden
Belöningar
Registrering
När du har registrerat dig kommer du att få information om svar och kommentarer på dina frågor.
Logga in
Om du redan har ett konto loggar du in för att kontrollera nya meddelanden.
Det kommer att finnas belöningar för frågor, svar och kommentarer.
Mer
Källa
Redigera
 akbiggs
akbiggs
Question

Varför anses "använda namespace std;" vara dålig praxis?

Andra har sagt till mig att det är fel att skriva using namespace std; i kod och att jag borde använda std::cout och std::cin direkt i stället.

Varför anses using namespace std; vara en dålig metod? Är det ineffektivt eller riskerar man att deklarera tvetydiga variabler (variabler som har samma namn som en funktion i namnområdet std)? Påverkar det prestandan?

2466 2009-09-21T03:08:23+00:00 3
L. F.
L. F.
Redigerad fråga 2019ör maj 2019 в 1:27
Programmering
namespaces
c++
c++-faq
std
using-directives
Popular videos
Why Using Namespace Std Is Bad To Use?
Why Using Namespace Std Is Bad To Use?
för 5 år sedan
Side Mission, The Bad Practice of using namespace: Fun with Modern C++ Series
Side Mission, The Bad Practice of using namespace: Fun with Modern C++ Series
för 5 år sedan
[C++] Don't use Using Namespace Std...
[C++] Don't use Using Namespace Std...
för 1 år sedan
Why we use Using Namespace std in C++ | Bit Coders #cplusplus #cplusplusprograming #programming
Why we use Using Namespace std in C++ | Bit Coders #cplusplus #cplusplusprograming #programming
för 1 år sedan
« Föregående
Nästa »
Den här frågan har 1 svar på engelska, för att läsa dem logga in på ditt konto.
Solution / Answer
Greg Hewgill
Greg Hewgill
2009ör september 2009 в 3:13
2009-09-21T03:13:50+00:00
Mer
Källa
Redigera
#9496964

Detta har inte alls med prestationer att göra. Men tänk på följande: Du använder två bibliotek som heter Foo och Bar:

using namespace foo;
using namespace bar;

Allt fungerar bra och du kan anropa Blah() från Foo och Quux() från Bar utan problem. Men en dag uppgraderar du till en ny version av Foo 2.0, som nu erbjuder en funktion som heter Quux(). Nu har du en konflikt: Både Foo 2.0 och Bar importerar Quux() till ditt globala namnområde. Det här kommer att kräva en del arbete att åtgärda, särskilt om funktionsparametrarna råkar stämma överens.

Om du hade använt foo::Blah() och bar::Quux() skulle införandet av foo::Quux() ha varit en icke-händelse.

Peter Mortensen
Peter Mortensen
Redigerat svar 2019ör september 2019 в 10:23
2085
0
Martin Beckett
Martin Beckett
2009ör september 2009 в 3:13
2009-09-21T03:13:18+00:00
Mer
Källa
Redigera
#9496963

Ett annat skäl är överraskningen.

Om jag ser cout << blah, istället för std::cout << blah tänker jag: Vad är detta cout? Är det den normala cout? Är det något speciellt?

Peter Mortensen
Peter Mortensen
Redigerat svar 2019ör september 2019 в 10:24
44
0
Preet Sangha
Preet Sangha
2009ör september 2009 в 3:14
2009-09-21T03:14:39+00:00
Mer
Källa
Redigera
#9496965

Allt handlar om att hantera komplexiteten. Om du använder namnområdet kommer du att få in saker som du inte vill ha, och därmed kan det eventuellt bli svårare att felsöka (jag säger eventuellt). Att använda std:: överallt är svårare att läsa (mer text och allt det där).

Hästar för kurser - hantera din komplexitet på det sätt du bäst kan och känner dig kapabel till.

Preet Sangha
Preet Sangha
Redigerat svar 2014ör februari 2014 в 7:40
22
0
Lägg till en fråga
Kategorier
Alla
Teknik
Kultur / fritid
Livet / Konst
Vetenskap
Professionell
Företag
Användare
Alla
Ny
Populära
1
Роман Азаров
Registrerad för 4 dagar sedan
2
Mansur Zakirov
Registrerad för 6 dagar sedan
3
Тагир Мамедов
Registrerad för 1 vecka sedan
4
Алексей Толманов
Registrerad för 1 vecka sedan
5
Valeriu Vodnicear
Registrerad för 2 veckor sedan
DE
EL
ES
FR
ID
IT
JA
LT
NL
PT
RU
SV
TR
UK
ZH
© kzen.dev 2023
Källa
stackoverflow.com
under licens cc by-sa 3.0 med angivande av