কম্পিউটার

C++ এ অবজেক্ট কপি প্রতিরোধ করা


C++ এ, যখন ক্লাস তৈরি করা হয়, আমরা কিছু কপি কনস্ট্রাক্টর বা অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে কপি করতে পারি। এই বিভাগে আমরা দেখব, কিভাবে C++ এ ক্লাসের অবজেক্ট কপি প্রতিরোধ করা যায়। বস্তুর অনুলিপি প্রতিরোধ করতে, আমরা কিছু নিয়ম অনুসরণ করতে পারি। এগুলো নিচের মত।

1. প্রাইভেট কপি কনস্ট্রাক্টর এবং প্রাইভেট অ্যাসাইনমেন্ট অপারেটর তৈরি করা।

উদাহরণ

#include <iostream>
using namespace std;
class MyClass {
   int x;
   public:
      MyClass() {
         //non-parameterized constructor
      }
      MyClass(int y): x(y) {
      }
   private:
      MyClass(const MyClass& obj) : x(obj.x) {
         //private copy constructor
      }
      MyClass& operator=(const MyClass& tmp_obj) {
         //private assignment operator (overloaded)
            x = tmp_obj.x;
         return *this;
      }
   };
 main() {
   MyClass ob(50);
   MyClass ob2(ob); // calls copy constructor
   ob2 = ob; // calls copy assignment operator
}

আউটপুট

[Error] 'MyClass::MyClass(const MyClass&)' is private
[Error] within this context
[Error] 'MyClass& MyClass::operator=(const MyClass&)' is private
[Error] within this context

2. প্রাইভেট কপি কনস্ট্রাক্টর এবং প্রাইভেট অ্যাসাইনমেন্ট অপারেটরের সাথে ডামি ক্লাস ইনহেরিট করুন।

উদাহরণ

#include <iostream>
using namespace std;
class DummyClass {
   public:
      DummyClass() {
      }
   private:
      DummyClass(const DummyClass& temp_obj) {
      }
      DummyClass& operator=(const DummyClass& temp_obj) {
      }
};
class MyClass : public DummyClass {
   int x;
   public:
      MyClass() { }
      MyClass(int y) : x(y) {
      }
};
int main() {
   MyClass ob1(50);
   MyClass ob2(ob1); // Calls copy constructor
   ob2 = ob1; // Calls copy assignment operator
}

আউটপুট

[Error] 'DummyClass::DummyClass(const DummyClass&)' is private
[Error] within this context
In function 'int main()':
[Note] synthesized method 'MyClass::MyClass(const MyClass&)' first
required here
In member function 'MyClass& MyClass::operator=(const MyClass&)':
[Error] 'DummyClass& DummyClass::operator=(const DummyClass&)' is
private
[Error] within this context
In function 'int main()':
[Note] synthesized method 'MyClass& MyClass::operator=(const
MyClass&)' first required here

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

  2. C++ এ কন্সট সদস্য ফাংশন

  3. স্ট্রিং কপি করার জন্য C++ প্রোগ্রাম

  4. কিভাবে C++ এ পাইথন অবজেক্ট ব্যবহার করবেন?