Tüm c ++ kurslarımızda, tüm öğretmenler dosyalarında her zaman ' lerin using namespace std;hemen arkasına koyarlar . O zamandan beri bu bana tehlikeli geliyor, o zamandan beri o başlığı başka bir programa dahil ederek ad alanını programıma aktarılan ad alanını, belki farkında olmadan, niyet etmeden veya istemeden elde edeceğim (başlık dahil etme çok derin bir şekilde iç içe olabilir).#include.h
Öyleyse sorum çifte: using namespaceBaşlık dosyalarında kullanılmaması gereken doğru muyum ve / veya bunu geri almanın bir yolu var mı, şöyle bir şey:
//header.h
using namespace std {
.
.
.
}
Aynı satırlar boyunca bir soru daha: Bir başlık #include, karşılık gelen .cppdosyanın ihtiyaç duyduğu tüm başlıkları dosyalamalı mı , yalnızca başlık tanımları için gerekli olanları .cppdosyalamalı #includeve dosyanın geri kalanını bırakmalı mı yoksa hiçbirini yapmalı ve ihtiyaç duyduğu her şeyi açıklamalı externmı?
Sorunun arkasındaki mantık yukarıdakiyle aynı: .hDosyaları dahil ederken sürprizler istemiyorum .
Ayrıca, eğer haklıysam, bu yaygın bir hata mıdır? Yani gerçek dünya programlamasında ve orada "gerçek" projelerde.
Teşekkür ederim.
using namespaceifadeler nedeniyle ad çakışmaları yaşarsanız, sorunu çözmek için tam nitelikli adı kullanabilirsiniz.