C++-এ ++i (প্রিফিক্স) এবং i++ (পোস্টফিক্স) এর মধ্যে বড় পার্থক্য রয়েছে, যদিও প্রিমিটিভ টাইপে (int, char) আধুনিক কম্পাইলার অপ্টিমাইজ করে একই কোড জেনারেট করে।
প্রিফিক্স vs পোস্টফিক্স
- ++i (Prefix): প্রথমে
i-র মান বড়ায়, তারপর এক্সপ্রেশনটির মান নতুনiরিটার্ন করে। - i++ (Postfix): প্রথমে এক্সপ্রেশনটির মান পুরনো
iরিটার্ন করে, তারপরi-র মান বড়ায়।
উদাহরণ কোড
#include <iostream>
using namespace std;
int main() {
int x = 3, y, z;
y = x++; // y = 3, তারপর x = 4
z = ++x; // x = 5, তারপর z = 5
cout << x << ", " << y << ", " << z;
return 0;
}
আউটপুট
5, 3, 5
স্টেপ-বাই-স্টেপ ব্যাখ্যা:
x = 3ইনিশিয়ালাইজy = x++→ এক্সপ্রেশন মান = ৩ (পুরনো x), y = 3, তারপর x = 4z = ++x→ x = 5 (ইনক্রিমেন্ট), এক্সপ্রেশন মান = ৫, z = 5- ফাইনাল: x=5, y=3, z=5
পারফরম্যান্স পার্থক্য
| দিক | Prefix (++i) | Postfix (i++) |
|---|---|---|
| প্রিমিটিভ টাইপ (int, float) | কোনো পার্থক্য নেই (কম্পাইলার অপ্টিমাইজ করে) | কোনো পার্থক্য নেই |
| ইউজার-ডিফাইনড টাইপ (ইটারেটর, ক্লাস) | দ্রুত — টেম্পোরারি অবজেক্ট তৈরি হয় না | ধীর — পুরনো মান কপি করে টেম্পোরারি অবজেক্ট তৈরি করে |
| রিটার্ন টাইপ | রেফারেন্স (T&) | ভ্যালু (T) |