কম্পিউটার টিউটোরিয়াল

C++-এ কপি এলিশন (Copy Elision) এবং রিটার্ন ভ্যালু অপ্টিমাইজেশন (RVO) কী?

কপি এলিশন (Copy Elision): কম্পাইলার অপ্টিমাইজেশন যা অপ্রয়োজনীয় কপি/মুভ কনস্ট্রাক্টর কল বাদ দেয়। নির্দিষ্ট পরিস্থিতিতে কম্পাইলার বাধ্যবশেই এটি প্রয়োগ করতে হয় (mandatory elision C++17-এ)।

উদাহরণ

struct MyStruct {
    MyStruct() {}
    MyStruct(const MyStruct&) { std::cout << "Copied.\n"; }
};

MyStruct f() { return MyStruct(); }

int main() {
    std::cout << "Main\n";
    MyStruct obj = f();
}

সম্ভাব্য আউটপুট (কম্পাইলার/অপ্টিমাইজেশনের ওপর নির্ভর)

Main
// বা
Main
Copied
// বা
Copied
Main
Copied

অর্থ: আপনার কোডে কতগুলো অবজেক্ট বनेगा সেটি নিশ্চিত নয়। তাই কপি/মুভ কনস্ট্রাক্টর বা ডিস্ট্রাক্টরে ক্রিটিক্যাল লজিক রাখা উচিত নয় (যেমন লগিং, রিসোর্স কাউন্টিং)।

RVO (Return Value Optimization)

ফাংশন থেকে অবজেক্ট রিটার্ন করলে কলারের স্ট্যাক ফ্রেমে সরাসরি কনস্ট্রাক্ট করা (কপি ছাড়া)। C++17-এ গ্যারান্টিড (mandatory) NRVO (Named RVO) ছাড়া।

সুপারিশ: ভ্যালু রিটার্ন করুন, কম্পাইলার অপ্টিমাইজ করবে। std::move রিটার্ন স্টেটমেন্টে ব্যবহার করবেন না (RVO বাধা দেয়)।

  1. C# 8.0-এ Async Streams কী?

  2. C#-এ ডেটা টাইপের ধরনসমূহ (Types in C#)

  3. C#-এ ref এবং out প্যারামিটার এর পার্থক্য

  4. C#-এ ডেটা টাইপ, ভ্যালু টাইপ এবং রেফারেন্স টাইপ কী?