কপি এলাইসন (Copy Elision) কে কপি অমিশন (Copy Omission) ও বলা হয়। এটি কম্পাইলার অপ্টিমাইজেশন টেকনিকের একটি। এটি অবজেক্টের অনাবশ্যক কপি এড়াতে সাহায্য করে। প্রায় সব আধুনিক কম্পাইলার এই কপি এলাইসন টেকনিক ব্যবহার করে।
একটি উদাহরণ কোডের মাধ্যমে দেখি কীভাবে এটি কাজ করে:
উদাহরণ কোড
#include <iostream> using namespace std; class MyClass { public: MyClass(const char* str = "\0") { //ডিফল্ট কনস্ট্রাক্টর cout << "Constructor called" << endl; } MyClass(const MyClass &my_cls) { //কপি কনস্ট্রাক্টর cout << "Copy constructor called" << endl; } }; main() { MyClass ob = "copy class object"; }
আউটপুট
Constructor called
এখন আলোচনা করি কেন কপি কনস্ট্রাক্টর কল হয়নি?
যখন একটি অবজেক্ট কনস্ট্রাক্ট হয়, একটি টেম্পোরারি অবজেক্ট জেনারেট হয় এবং সেটি আসল অবজেক্টে কপি হয়। তাই আমরা বলতে পারি ইন্টারন্যালি এটা এমন দেখাবে:
MyClass ob = "copy class object";
এটি নিচের মতো কাজ করবে:
MyClass ob = MyClass("copy class object");
সি++ কম্পাইলাররা এই ধরনের ওভারহেড এড়ায়।