C++-এ ভার্চুয়াল ফাংশন ব্যবহার করে বেস ক্লাস পয়েন্টারর একটি লিস্ট তৈরি করা যায় এবং যেকোনো ডেরাইভড ক্লাসের মেথড কল করা যায়, ডেরাইভড ক্লাস অবজেক্টের ধরন না জানলেও। ভার্চুয়াল ফাংশনগুলো রানটাইমে রেজলভ হয়।
যদি একটি ভার্চুয়াল ফাংশন বেস ক্লাসে একবার ডিক্লেয়ার করা হয়, তবে সেই বেস ক্লাস থেকে ডেরাইভড প্রতিটি ক্লাসে সেটি স্বয়ংক্রিয়ভাবে ভার্চুয়াল হয়ে যায়। তাই ডেরাইভড ক্লাসে রিডিফাইন করা ভার্চুয়াল বেস ক্লাস ফাংশন ডিক্লেয়ার করার সময় virtual কিওয়ার্ড ব্যবহার করা প্রয়োজন নেই।
#includeusing namespace std; class B { public: virtual void s() { cout << " In Base \n"; } }; class D : public B { public: void s() { cout << "In Derived \n"; } }; int main(void) { D d; // ক্লাস D-এর একটি অবজেক্ট B *b = &d; // B* টাইপের একটি পয়েন্টার যা d-কে নির্দেশ করছে b->s(); // "D::s() called" প্রিন্ট করবে return 0; }
In Derived