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