2012-08-15 22 views
6

Olası Çoğalt: Ne std::cout başka yerlerde insanlar için üstündeki using namespace std; olacak oysa, diyelim ki, insanlar kullanan bazı kod örnekleri gördüm
Why is 'using namespace std;' considered a bad practice in C++?tarzı ve ad

basitlik yerine. Genel olarak hangisi tercih edilir?

+2

Başka bir seçenek: std :: cout kullanarak. – hmjd

+6

[Neden namespace std; kötü bir uygulama olarak kullanılıyor?] (Http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-a-bad-practice-in-c) – chris

+3

Basit bir kural istiyorsanız: “using” direktiflerini kullanmayın (yani 'namespace kullanarak abc;'); ve yalnızca kullanma ve ADL kontrolü için "using" bildirimlerini kullanın (örn. Base :: foo kullanarak). Yine de, kaynak kodunu düzenli tutmak için ad alanı takma adlarını kullanın. –

cevap

3

Kullanım std::cout isim çatışmaları. using namespace std;'u kullanarak kullanırsanız, global ad alanınızı, sınıflarınızla ya da sizin veya ekibinizdeki başka birinin yazmış olduğu işlev isimleriyle çakışabilecek tüm std adlarıyla doldurursunuz. Zaten bunun farkında olabilir - Bu iyi C++ faq lite içinde ve aslausing namespace bir başlıkta gerektiğini SO

2

Kod yazarken, tam ad alanı mezhepini kişisel olarak kullanıyorum. std::string, vb. Geliştiricinin kullanmak istediği işlevi okuyan herkes için işleri daha net hale getirir.

aşağıdaki söyleyerek gördüm: olasılığını ortadan kaldırmak amacıyla bir zamanlar, binlerce kez okundu

yazma ...

:)

0

İlk notta açıklanmıştır. Bunun nedeni, using'u içeren herhangi bir kaynak dosyaya getirmesidir. Kaynak dosya düzeyinde bile standart kütüphane işlevlerini ve sınıfları std::cout liek olarak nitelendirmeyi tercih ediyorum. Ancak bazı durumlarda, kolaylık sağlamak için özel kullanımları kullanacağım (örneğin, using std:endl). Bununla birlikte, genellikle açık nitelikleri tercih ederim.