ฟังก์ชันเสมือนใน C++ ใช้เพื่อสร้างรายการพอยน์เตอร์คลาสพื้นฐานและเมธอดการเรียกของคลาสที่ได้รับใดๆ โดยที่ไม่รู้ด้วยซ้ำว่าคลาสอ็อบเจ็กต์ที่ได้รับมานั้นเป็นอย่างไร ฟังก์ชันเสมือนได้รับการแก้ไขล่าช้า ณ รันไทม์
การใช้งานหลักของฟังก์ชันเสมือนคือการบรรลุ 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