ফরওয়ার্ড ডিক্লেরেশন কম্পাইলারকে বলে দেয় যে একটি নির্দিষ্ট নামের ক্লাস/স্ট্রাক্ট/ক্লাস টেমপ্লেট অস্তিত্ব আছে, কিন্তু এর সংজ্ঞা (definition) পরে দেওয়া হবে।
উদাহরণ
class Person; // ফরওয়ার্ড ডিক্লেরেশন
void myFunc(Person p1) { // Person incomplete type, কিন্তু পয়েন্টার/রেফারেন্স ব্যবহার করা যায়
// ...
}
class Person { // সংজ্ঞা পরে
// ক্লাস ডেফিনিশন
};
কখন ব্যবহার করা হয়?
- সার্কুলার ডিপেন্ডেন্সি ভাঙতে (A.h B-র/include করে, B.h A-র/include করে)
- কম্পাইল টাইম হ্রাস করতে (হেডার ফাইলে ফুল ডেফিনিশন না দিয়ে শুধু ফরওয়ার্ড ডিক্লেরেশন)
- Pimpl ইডিওম (Pointer to Implementation) - প্রাইভেট ডেটা হেডার থেকে লুকাতে
সীমাবদ্ধতা: ইনকমপ্লিট টাইপের ওপর: সাইজ জানা যায় না, মেম্বার অ্যাক্সেস করা যায় না, বেস ক্লাস হিসেবে ব্যবহার করা যায় না। শুধু পয়েন্টার/রেফারেন্স ব্যবহার করা যায়।