सी ++ 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};
}
प्रत्येक चर मैं घोषणा के लिए, मुझे लगता है कि करने के लिए जो आरंभ वाक्य रचना का उपयोग करना चाहिए है और यह मेरा कोडिंग गति को धीमा कर देती। मुझे यकीन है कि घुंघराले ब्रैकेट पेश करने का इरादा नहीं था।
जब यह टेम्पलेट कोड की बात आती है, तो वाक्यविन्यास बदलने से अलग-अलग अर्थ हो सकते हैं, इसलिए सही तरीके से जाना आवश्यक है।
मुझे आश्चर्य है कि क्या एक सार्वभौमिक दिशानिर्देश है जिसे सिंटैक्स को चुना जाना चाहिए।
से {} initialisation अनायास ही व्यवहार का एक उदाहरण: स्ट्रिंग (50, 'एक्स') बनाम स्ट्रिंग {50, 'एक्स'} [यहां] (http://stackoverflow.com/questions/27063811/c11-string50- एक्स-बनाम-स्ट्रिंग 50-एक्स) –