ฟังก์ชันเสมือน (Virtual functions) ใน C++ ใช้เพื่อสร้างรายการของพอยน์เตอร์คลาสฐานและเรียกเมธอดของคลาสลูกใดๆ ได้โดยไม่ต้องรู้ว่าออบเจ็กต์คลาสลูกเป็นประเภทใด ฟังก์ชันเสมือนจะถูกแก้ไข (resolved) ภายหลัง ในขณะรันไทม์ (runtime)
การใช้งานหลักของฟังก์ชันเสมือนคือเพื่อให้ได้โพลีมอร์ฟิซึมรันไทม์ (Runtime Polymorphism) โพลีมอร์ฟิซึมรันไทม์สามารถทำได้เฉพาะผ่านพอยน์เตอร์ (หรืออ้างอิง) ของประเภทคลาสฐาน นอกจากนี้ พอยน์เตอร์คลาสฐานสามารถชี้ไปยังออบเจ็กต์ของคลาสฐานและออบเจ็กต์ของคลาสลูกได้ ในโค้ดข้างต้น พอยน์เตอร์คลาสฐาน 'b' มีที่อยู่ของออบเจ็กต์ 'd' ของคลาสลูก
ตัวอย่างโค้ด
#include<iostream> using 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; // An object of class D B *b= &d; // A pointer of type B* pointing to d b->s(); // prints "D::s() called" return 0; }
ผลลัพธ์
In Derived