Kullanarak standart Ad
Kullanma kullanma 'std ad. saygı ile ilgili farklı görüşler var
Bazı kullanın ' using namespace std
', ' std::
' Diğerleri böyle bir şey kullanmak ki: . ile kullanılacak daha ziyade std fonksiyonları önek yok diyecek başka söz
using std::string;
using std::cout;
using std::cin;
using std::endl;
using std::vector;
tüm standart fonksiyonlar için kullanılacak.
Her artıları ve eksileri nelerdir? |
CEVAP
En C kullanıcıları oldukça mutlu std::string
, std::vector
, vb okuyor. Aslında vector
çiğ görmek beni bu std::vector
veya farklı bir tanımlı kullanıcı vector
meraklandırıyor.
using namespace std;
karşı her zaman duyuyorum. Genel ad haline adları her türlü ithalat ve non-açık belirsizlikleri her türlü neden olabilir.
Burada std
ad bazı ortak tanımlayıcılar: sayma, sıralama, bulmak, eşit, ters. Yerel bir değişken count
adlı using namespace std
std::count
yerine count
kullanmanıza olanak vermiyor demektir.
Adı istenmeyen bir çatışma klasik örnek, aşağıdaki gibi bir şey. Bir acemi ve std::count
bilmediği hayal edin. <algorithm>
başka bir şey kullanıyor ya da görünüşte ilgisiz bir başlık tarafından çekilmiş olduğunu hayal edin.
#include <algorithm>
using namespace std;
int count = 0;
int increment()
{
return count; // error, identifier count is ambiguous
}
Bu hata genellikle std çünkü uzun bir dönemdir::saymak biraz uzun, iç içe geçmiş türlerini içeren bir şablondur.
Bu std çünkü olsa TAMAM,:: sayım genel ad girer ve işlevini gizler saymak.
#include <algorithm>
using namespace std;
int increment()
{
static int count = 0;
return count;
}
Belki biraz şaşırtıcı ama, bu TAMAM. Tanımlayıcı ve açıklayıcı bir kapsam içine alınan her iki tanımlanan ve alınan nereden nereye kapsayan ortak bir ad görünür. Diğer bir deyişle, std::count
increment
içinde genel ad count
olarak görünür.
#include <algorithm>
int increment()
{
using namespace std;
static int count = 0;
return count;
}
Ve benzeri nedenlerle, count
belirsiz işte. using namespace std
std::count
dış beklenen olabilir gibi count
gizle sebep olmaz. using namespace
kural anlamına gelir std::count
görünüyor (increment
fonksiyon) sanki ilan edildi de genel kapsamlı, yani aynı kapsam olarak int count = 0;
ve dolayısıyla neden belirsizlik.
#include <algorithm>
int count = 0;
int increment()
{
using namespace std;
return count; // error ambiguous
}
hesaplamak ve C boost kullanarak örnek...
Nasıl bir dosya Red Hat Linux üzerinde...
Kullanarak standart Ad...
Nasıl ayrıştırma Scala standart Scala ...
C 11 vadeli işlemler kullanarak: std ç...