এখানে আমরা দেখব কনস্ট্রাক্টর ডেলিগেশন কি? যখন একজন কনস্ট্রাক্টর একই শ্রেণীর অন্য কনস্ট্রাক্টরকে কল করে, তখন তাকে কনস্ট্রাক্টর ডেলিগেশন বলা হয়। এই বৈশিষ্ট্যটি C++11 থেকে উপস্থিত।
আসুন আমরা নিম্নলিখিত প্রোগ্রামটি দেখি, এবং এই কোডটিতে কী কী অসুবিধা রয়েছে তা বিশ্লেষণ করার চেষ্টা করি।
উদাহরণ
#include <iostream> using namespace std; class MyClass { int a, b, c; public: MyClass(){ a = b = c = 0; } MyClass(int c) { // Initializing a and b are redundent, only c initialization is needed here a = 0; b = 0; this->c = c; } void display(){ cout << "a : " << a << ", b : " << b << ", c : " << c; } }; main() { MyClass my_obj(5); my_obj.display(); }
আউটপুট
a : 0, b : 0, c : 5
এখানে আমরা দেখতে পাচ্ছি যে কোডটি ভাল কাজ করছে, তবে কিছু অপ্রয়োজনীয় কোড রয়েছে। নন-প্যারামিটারাইজড কনস্ট্রাক্টর a এবং b-এর মান 1-এ সেট করতে পারে। সুতরাং আমরা যদি প্রথম কনস্ট্রাক্টরটিকে দ্বিতীয়টিতে ব্যবহার করি, তাহলে এটি আরও কার্যকর হবে। এই কারণে, আমাদের কনস্ট্রাক্টর ডেলিগেশন নামক পদ্ধতিটি ব্যবহার করতে হবে।
উদাহরণ
#include <iostream> using namespace std; class MyClass { int a, b, c; public: MyClass(){ a = b = c = 0; } MyClass(int c) : MyClass(){ //using constructor delegation this->c = c; } void display(){ cout << "a : " << a << ", b : " << b << ", c : " << c; } }; main() { MyClass my_obj(5); my_obj.display(); }
আউটপুট
a : 0, b : 0, c : 5