SORU
12 AĞUSTOS 2009, ÇARŞAMBA


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
12 AĞUSTOS 2009, ÇARŞAMBA


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
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010
  • LavcoPriceTech

    LavcoPriceTe

    21 AĞUSTOS 2010