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 namespace
Baş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 .cpp
dosyanın ihtiyaç duyduğu tüm başlıkları dosyalamalı mı , yalnızca başlık tanımları için gerekli olanları .cpp
dosyalamalı #include
ve dosyanın geri kalanını bırakmalı mı yoksa hiçbirini yapmalı ve ihtiyaç duyduğu her şeyi açıklamalı extern
mı?
Sorunun arkasındaki mantık yukarıdakiyle aynı: .h
Dosyaları 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 namespace
ifadeler nedeniyle ad çakışmaları yaşarsanız, sorunu çözmek için tam nitelikli adı kullanabilirsiniz.