SORU
22 HAZİRAN 2011, ÇARŞAMBA


Ne kadar C 11 otomobil ile çok fazla anahtar kelime.

İçin tasarlanmış olduğuna inanıyorum budur auto karmaşık şablon türleri için C 11 standart mevcut yeni anahtar kelime kullanıyorum. Ama aynı zamanda gibi şeyler için kullanıyorum:

auto foo = std::make_shared<Foo>();

Ve daha skeptically için:

auto foo = bla(); // where bla() return a shared_ptr<Foo>

Bu konu hakkında çok tartışma görmedim. Otomatik bir türü sıklıkla belgeleri ve sağlamlık denetimleri bir form olduğu için gereksiz olabilir gibi görünüyor. Nerede auto kullanarak çizgi çiz ve ne kullanımı tavsiye edilen bu yeni özellik için dava var mı?

Netleştirmek için: felsefi bir görüş için soruyorum; standart Komitesi tarafından bu anahtar kelime kullanım için soruyorum, muhtemelen bu kullanım pratikte hayata nasıl yorum.

Yan Not: Bu soru SE taşındı.Programcılar ve geri Yığın Taşması. Bu konuda tartışma meta question Bu bulunabilir.

CEVAP
22 HAZİRAN 2011, ÇARŞAMBA


Bir ilk bakışta zor türü nasıl yazıldığını söylemek ne zaman auto anahtar kelime kullanmak gerektiğini düşünüyorum, ama ifadenin sağ tarafı türüne açıktır. Örneğin, kullanarak:

my_multi_type::nth_index<2>::type::key_type::composite_key_type::\
key_extractor_tuple::tail_type::head_type::result_type

bunu bildiğin halde boost::multi_index, bileşik anahtar türü için int. Sadece gelecekte değişmiş olabilir çünkü int yazamazsın. Bu durumda auto yazarım.

Eğer auto anahtar kelime, belirli bir durumda okunabilirliği arttırır eğer öyleyse bunu kullanın. auto neyi temsil ettiğini okuyucuya açıktır auto yazabilirsiniz.

İşte bazı örnekler:

auto foo = std::make_shared<Foo>(); // obvious
auto foo = bla(); // unclear. don't know which type `foo` has

const size_t max_size = 100;
for ( auto x = max_size; x > 0; --x ) // unclear. could lead to the errors
                                      // since max_size is unsigned

std::vector<some_class> v;
for ( auto it = v.begin(); it != v.end();   it ) // ok, since I know
// that `it` has an iterator type (don't really care which one in this context)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MovieZoneET

    MovieZoneET

    22 Aralık 2009
  • Tinkernut

    Tinkernut

    28 Aralık 2006
  • UniqueApps

    UniqueApps

    4 Ocak 2009