Dynamic dispatch là gì?
- ★
- ★
- ★
- ★
- ★
Trong lập trình hướng đối tượng, dynamic dispatch là quá trình lựa chọn việc implementation của một phương thức (method) hoặc hàm (function) nào để gọi tại thời điểm chạy.
Dynamic dispatch trái ngược với static dispatch, trong đó triển khai (implementation) của phương thức hoặc hàm được chọn tại thời điểm biên dịch (compile time). Mục đích của dynamic dispatch là trì hoãn việc lựa chọn một dịch thích hợp cho đến khi biết kiểu dữ liệu của một tham số (parameter) hoặc nhiều tham số.
Dynamic dispatch khác với late binding (hay còn gọi là dynamic binding). Name binding liên kết tên với một phương thức hoặc hàm. Một phương thức đa hình (polymorphic method) hoặc hàm đa hình (polymorphic function) có một số cách triển khai, tất cả đều được liên kết với cùng một tên. Các binding có thể được thực hiện tại thời điểm biên dịch hoặc (với late binding) vào run time. Với dynamic dispatch, một triển khai của một phương thức hoặc hàm cụ thể được chọn tại run time. Trong khi dynamic dispatch không ngụ ý late binding, late binding ngụ ý dynamic dispatch, vì việc triển khai của các phương thức hoặc hàm trong late binding không được biết cho đến run time.
Dynamic dispatch được chia thành single dispatch và multiple dispatch.
C ++ sử dụng early binding và cung cấp cả dynamic dispatch và static dispatch. Hình thức mặc định của dispatch là static dispatch. Để nhận được dynamic dispatch, lập trình viên phải khai báo một phương thức là ảo (virtual). Xem code ví dụ bên dưới trong C++:
#include <iostream>
// make Pet an abstract virtual base class
class Pet {
public:
virtual void speak() = 0;
};
class Dog : public Pet {
public:
void speak()
{
std::cout
Learning English Everyday