تو دو تا پست قبل در باره سازندهها در c++11 نوشتم (اینجا و اینجا). این پست آخر از این سریه و به مقداردهی جدید اختصاص داره.
استاندارد جدید برای مقدار دهی اولیه به انواع مختلف، راه حل یکسانی پیشنهاد میده. در واقع مقداردهی اولیه شبیه به حالتی میشه که قبلا برای آرایههای با اندازه ثابت استفاده میشد:
۱ |
int arr[۴]={۰,۱,۲,۳}; |
اما مقداردهی با این سبک تو استاندارد جدید:
- آرایههای پویا:
۱int* a = new int[۳] { ۱, ۲, ۰ }; - سازندههای کلاسها:
۱۲۳۴۵۶۷۸۹class C{int a;int b;public:C(int i, int j);}; C c {۰,۰}; //Equivalent to: C c(0,0); - مقداردهی اولیه به اعضای آرایهای در سازنده:
۱۲۳۴۵class X {int a[۴];public:X() : a{۱,۲,۳,۴} {} //C++11, member array initializer}; - استفاده از std::initializer_list: اگر پارامتر سازنده از نوع std::initializer_list باشه، سازنده میتونه هر چند تا پارامتر بگیره. به طور خاص این حالت برای کلاسهایی که به شکل ذخیر کننده عمل میکنند مفیده. مثلا containerهای stl:
۱۲۳۴vector<string> vs={ "first", "second", "third"};map singers ={ {"Lady Gaga", "+۱ (۲۱۲) ۵۵۵-۷۸۹۰"},{"Beyonce Knowles", "+۱ (۲۱۲) ۵۵۵-۰۹۸۷"}};