Trong lập trình hướng đối tượng, virtual và override là hai khái niệm quan trọng liên quan đến tính đa hình trong C++.
1. Virtual: Từ khóa virtual được sử dụng trong lớp cơ sở để khai báo một hàm có thể bị ghi đè (overridden) trong lớp con. Khi một hàm được khai báo là virtual, C++ sẽ sử dụng bảng chỉ mục hàm ảo (vtable) để xác định hàm nào sẽ được gọi dựa trên loại đối tượng thực tế tại thời điểm chạy.
2. Override: Từ khóa override được sử dụng trong lớp con để chỉ định rằng một hàm đang ghi đè một hàm ảo từ lớp cơ sở. Điều này giúp đảm bảo rằng hàm của lớp con thực sự ghi đè đúng hàm ảo và giúp tránh lỗi lập trình.
Cách hoạt động:
- Khi một đối tượng của lớp con được tạo ra và gọi hàm virtual, C++ sẽ kiểm tra vtable để tìm hàm tương ứng, cho phép thực hiện hành động cụ thể của lớp con.
- Việc sử dụng virtual và override giúp tăng cường tính linh hoạt và khả năng mở rộng của chương trình, cho phép các đối tượng khác nhau phản ứng theo cách riêng của chúng khi sử dụng cùng một giao diện.