Hàm ảo (virtual function) trong C++ dùng để tạo danh sách con trỏ lớp cơ sở và gọi phương thức của bất kỳ lớp dẫn xuất nào mà không cần biết kiểu đối tượng dẫn xuất cụ thể. Hàm ảo được giải quyết muộn (late binding), tại thời điểm chạy (runtime).
Dưới đây là ví dụ triển khai hàm ảo trong C++:
Ví dụ
#include <iostream>
using namespace std;
class B {
public:
virtual void s() { // hàm ảo
cout << " In Base \n";
}
};
class D : public B {
public:
void s() {
cout << "In Derived \n";
}
};
int main(void) {
D d; // đối tượng lớp D
B *b = &d; // con trỏ kiểu B* trỏ đến d
b->s(); // in "D::s() called"
return 0;
}
Kết quả
In Derived