SORU
2 NİSAN 2012, PAZARTESİ


Brace-kapalı başlatıcı ne zaman kullanılır?

C değişkenlerini başlatmak için nasıl bize olasılıklar büyük bir sayı verir başlatılıyor sınıflar için yeni bir sözdizimi var 11,.

{ // Example 1
  int b(1);
  int a{1};
  int c = 1;
  int d = {1};
}
{ // Example 2
  std::complex<double> b(3,4);
  std::complex<double> a{3,4};
  std::complex<double> c = {3,4};
  auto d = std::complex<double>(3,4);
  auto e = std::complex<double>{3,4};
}
{ // Example 3
  std::string a(3,'x');
  std::string b{3,'x'}; // oops
}
{ // Example 4
  std::function<int(int,int)> a(std::plus<int>());
  std::function<int(int,int)> b{std::plus<int>()};
}
{ // Example 5
  std::unique_ptr<int> a(new int(5));
  std::unique_ptr<int> b{new int(5)};
}
{ // Example 6
  std::locale::global(std::locale("")); // copied from 22.4.8.3
  std::locale::global(std::locale{""});
}
{ // Example 7
  std::default_random_engine a {}; // Stroustrup's FAQ
  std::default_random_engine b;
}
{ // Example 8
  duration<long> a = 5; // Stroustrup's FAQ too
  duration<long> b(5);
  duration<long> c {5};
}

Her değişken için ilan ediyorum, kullanmam gereken düşünmek zorundayım ve bu benim kodlama hızını yavaşlatır. O kıvırcık parantez tanıtan niyeti olmadığına eminim.

Şablon kodu gelince, sözdizimi değişen farklı anlamlara yol açabilir, doğru yolda esastır.

Birini seçti gereken evrensel bir kural olup olmadığını merak ediyorum.

CEVAP
2 NİSAN 2012, PAZARTESİ


Bendüşünüyorumaşağıdaki iyi bir kılavuz olabilir:

  • İle başlatılıyor (tek) değeri olması amaçlanmıştırtam değernesne, (=) kullanın kopya başlatma sonra hata durumunda, asla yanlışlıkla genellikle farklı sağlanan değeri yorumlaması açık bir kurucu çağırmak olacak çünkü). Küçük yerlerde kopya başlatma mevcut değildir, ayracı başlatma var doğru anlambilim, ve eğer öyleyse, kullanmak; aksi halde kullanın parantez başlatma (eğer o da mevcut değil, sensin şansı yok zaten).

  • İle başlatılıyor değerleri ise olması için bir değerler listesinesnenin içinde saklı(vektör/bir dizi, gerçek/hayali, bir karmaşık sayının bölümü) elemanları gibi, ayraç başlatma varsa kullanın.

  • Değerleri ise ile başlatılıyordeğildepolanacak değerler amatarifnesne hedeflenen değer/devlet, parantez kullanın. Örnekler fstream vector veya bir dosya adının bir tartışmanın boyutunu argüman.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 1881 Animation

    1881 Animati

    5 EKİM 2013
  • Brandon McCrary

    Brandon McCr

    15 Ocak 2012
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007