C ++ 11'de, sınıfları başlatmak için, değişkenleri nasıl başlatacağımız konusunda bize çok sayıda olasılık veren yeni sözdizimimiz var.
{ // 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};
}
Açıkladığım her değişken için, hangi ilkleme sözdizimini kullanmam gerektiğini düşünmem gerekiyor ve bu benim kodlama hızımı yavaşlatıyor. Küme parantezlerini tanıtmak niyetinin bu olmadığına eminim.
Şablon kodu söz konusu olduğunda, sözdizimini değiştirmek farklı anlamlara yol açabilir, bu nedenle doğru yoldan gitmek çok önemlidir.
Birinin seçmesi gereken sözdizimi evrensel bir kılavuz olup olmadığını merak ediyorum.