SORU
25 HAZİRAN 2009, PERŞEMBE


Herhangi bir nedenle kullanmak için 'oto' C 03 anahtar kelime var mı?

Notbu soru aslında C 11 onaylandı önce auto kelime anlamını büyük ölçüde değişti önce 2009 yılında yayınlanmıştır. Cevaplar ilgilendirmeyen sağladısadeceDepolama sınıfı olmak auto C 03 -- anlamı -- belirtilen ve otomatik tür kesintinin olmak ... ** 4 / C 11 anlamı yok. Eğer C kullanma hakkında tavsiye arıyorsanız 11 auto Bu soru şu soru ile alakalı değil.

Uzun zamandır değişkenler blok kapsamı dışında ilan örtülü olarak küresel çünkü C static anahtar kelime kullanmak için bir nedeni olmadığını düşündüm. O zaman fark ettim açıklayan bir değişken olarak static içinde blok-kapsam verecekti kalıcı süresi ve ilan dışında blok-scope (program kapsam) verecekti dosya-scope (sadece ulaşılan bu derleme birimi).

Bu ben (belki) henüz tam olarak anlayamadığım bir tek kelime ile bana kalıyor: auto anahtar kelime. Yoktur bunun başka bir anlamı 'yerel değişken?' Örtülü olarak kullanmak isteyebilirsiniz her yerde senin için yapamaz mı öyle bir şey? Nasıl auto bir değişken program kapsamında davranıyor? Ne dosya kapsamında static auto değişken? Bu anahtar kelime herhangi bir amaç dışında var mıeksiksiz olarak mevcut?

CEVAP
14 HAZİRAN 2012, PERŞEMBE


11, auto yeni bir anlam vardır C: otomatik olarak bir değişken türünü anlamak için izin verir.

Bu yüzden daha yararlı olur? Hadi temel bir örneği ele alalım

std::list<int> a;
// fill in a
for (auto it = a.begin(); it != a.end();   it) {
  // Do stuff here
}

auto 14 ** tür bir yineleyici oluşturur.

Bu gerçekten karmaşık kod çok daha kolay okunur hale getirebilir.

Başka bir örnek:

int x, y;
auto f = [&]{ x  = y; };
f();
f();

Orada, auto türü bir değişken bir lambda ifade depolamak için gerekli çıkarılabilir. Vikipedi coverage on the subject. iyi vardır

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boniver

    boniver

    17 NİSAN 2006
  • Jejoab

    Jejoab

    4 NİSAN 2008
  • MultiPlayStationMan

    MultiPlaySta

    17 Aralık 2009