কম্পিউটার

C++ এ কনস্ট্রাক্টর ডেলিগেশন


এখানে আমরা দেখব কনস্ট্রাক্টর ডেলিগেশন কি? যখন একজন কনস্ট্রাক্টর একই শ্রেণীর অন্য কনস্ট্রাক্টরকে কল করে, তখন তাকে কনস্ট্রাক্টর ডেলিগেশন বলা হয়। এই বৈশিষ্ট্যটি 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

  1. C++ এ কনস্ট্রাক্টরের কাছে একটি ভেক্টর পাস করা

  2. C++ ডিফল্ট কনস্ট্রাক্টর

  3. C++ এ কন্সট্রাক্টর বনাম অ্যাসাইনমেন্ট অপারেটর কপি করুন

  4. C++ এ কন্সট্রাক্টর কপি করুন