সংজ্ঞা অনুসারে, ডিফল্ট ইনিশিয়ালাইজেশন হ'ল সূচনা যা ঘটে যখন অন্য কোনও সূচনা নির্দিষ্ট না করা হয়; সি ++ ভাষা আপনাকে গ্যারান্টি দেয় যে আপনি যে কোনও অবজেক্টের জন্য সুস্পষ্ট প্রারম্ভকালীন সরবরাহ করেন না সেটিকে ডিফল্ট আরম্ভ করা হবে (সি ++ 11 §8.5 / 11)। এর মধ্যে টাইপ std::array<T, N>এবং অবজেক্টস অন্তর্ভুক্ত রয়েছে T[N]।
সচেতন থাকুন যে কয়েকটি ধরণের জন্য ডিফল্ট সূচনাটির কোনও প্রভাব নেই এবং অবজেক্টের মান অনির্দিষ্টভাবে ছেড়ে যায়: কোনও শ্রেণিবদ্ধ, অ-অ্যারে টাইপ (§8.5 / 6)। ফলস্বরূপ, এই জাতীয় ধরণের অবজেক্টগুলির একটি ডিফল্ট-আরম্ভীকৃত অ্যারের অনির্দিষ্ট মান থাকবে, যেমন:
int plain_int;
int c_style_array[13];
std::array<int, 13> cxx_style_array;
উভয় সি-স্টাইলের অ্যারে এবং std::arrayঅনির্দিষ্ট মানের পূর্ণসংখ্যার সাথে পূর্ণ, যেমন plain_intঅনির্দিষ্ট মান রয়েছে।
এমন একটি বাক্য গঠন আছে যা সমস্ত উপাদানকে তাদের ডিফল্ট মানটিতে আরম্ভ করার জন্য (শূন্য আকারের অ্যারে সহ) কাজ করবে?
আমি অনুমান করছি যে আপনি যখন "তাদের ডিফল্ট মানকে" বলবেন তখন আপনার সত্যিকার অর্থে "সমস্ত উপাদানকে আরম্ভ করে" বোঝানো হবে T{}। এটি ডিফল্ট-আরম্ভ নয় , এটি মান-সূচনা (8.5 / 7)। আপনি প্রতিটি ঘোষণাকে একটি খালি প্রারম্ভিক উপহার দিয়ে সি ++ 11 তে খুব সহজেই মান শুরুর জন্য অনুরোধ করতে পারেন:
int plain_int{};
int c_style_array[13]{};
std::array<int, 13> cxx_style_array{};
যা ঘুরে ঘুরে অ্যারে উপাদানগুলির সমস্তকেই আরম্ভ করবে, ফলস্বরূপ এবং plain_old_intউভয় ধরণের অ্যারেগুলির সমস্ত সদস্যকে শূন্যের দিকে আরম্ভ করা হবে।
T x[N]বাক্য গঠনের সমতুল্য ।