Dynamic binding là gì?

Phrase C++
late binding

Trong C++, dynamic binding là một loại binding:

  • Dynamic binding xảy ra tại thời điểm runtime. Ngoài ra còn gọi là late binding.
  • Trong dynamic binding, định nghĩa hàm và lệnh gọi hàm không được liên kết cho đến runtime
  • Dynamic binding xảy ra khi trình biên dịch (compiler) không thể xác định tất cả thông tin cần thiết cho một lệnh gọi hàm tại thời điểm biên dịch.
  • Có thể đạt được static binding bằng cách sử dụng hàm ảo (virtual function)

Hãy xem xét đoạn code sau, trong đó chúng ta có một lớp cha (base class) Parent và một lớp con (derived class) Child. Lớp cha Parent có một hàm ảo f(), được ghi đè bởi một hàm trong lớp con Child, tức là Child :: f () ghi đè Parent :: f ().

Bây giờ, chúng ta hãy xem xét câu lệnh parentPtr = &child; và parentPtr->f();, trong đó quyết định về hàm của lớp nào sẽ được gọi phụ thuộc vào kiểu động của đối tượng (object) được trỏ đến bởi parentPtr. Thông tin này chỉ có thể có sẵn trong runtime và do đó f() phải tuân theo dynamic binding.


#include <iostream>
using namespace std;
 
class Parent
{
    public:
 
    // Virtual function
    virtual void f() {
        cout f();
 
    parentPtr = &child;
    parentPtr ->f();
 
    return 0;
}

Output:


The parent class function is called.
The child class function is called.

Xem thêm static binding.

Phrase Programming
late binding

Trong lập trình nói chung, dynamic binding là cơ chế một chương trình máy tính liên kết (bind) tên của một phương thức (method) được gọi với định nghĩa của phương thức đó ở runtime.

Learning English Everyday