C++-এ ভার্চুয়াল ফাংশন ব্যবহার করে বেস ক্লাস পয়েন্টারর একটি লিস্ট তৈরি করা যায় এবং যেকোনো ডেরাইভড ক্লাসের মেথড কল করা যায়, ডেরাইভড ক্লাস অবজেক্টের ধরন না জানলেও। ভার্চুয়াল ফাংশনগুলো রানটাইমে রেজলভ হয়।
ভার্চুয়াল ফাংশনের প্রধান ব্যবহার হলো রানটাইম পলিমরফিজম অর্জন। রানটাইম পলিমরফিজম শুধু বেস ক্লাস টাইপের একটি পয়েন্টার (বা রেফারেন্স) দিয়ে অর্জন করা যায়। একটি বেস ক্লাস পয়েন্টার বেস ক্লাস অবজেক্টের পাশাপাশি ডেরাইভড ক্লাস অবজেক্টেরও দিকে নির্দেশ করতে পারে। উপরের কোডে, বেস ক্লাস পয়েন্টার 'b' ডেরাইভড ক্লাসের অবজেক্ট 'd'-র ঠিকানা ধারণ করে।
#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