Sự khác biệt giữa liên kết tĩnh và động

Tác Giả: Laura McKinney
Ngày Sáng TạO: 1 Tháng Tư 2021
CậP NhậT Ngày Tháng: 1 Tháng BảY 2024
Anonim
Sự khác biệt giữa liên kết tĩnh và động - Công Nghệ
Sự khác biệt giữa liên kết tĩnh và động - Công Nghệ

NộI Dung


Liên kết liên kết của một định nghĩa hàm ’với một hàm call gọi hàm hoặc một liên kết của một giá trị’ giá trị với một biến số, được gọi là ‘ràng buộc. Trong quá trình biên dịch, mọi định nghĩa hàm ’được cung cấp một địa chỉ bộ nhớ; Ngay sau khi gọi chức năng được thực hiện, điều khiển thực hiện chương trình sẽ di chuyển đến địa chỉ bộ nhớ đó và nhận mã chức năng được lưu trữ tại vị trí đó được thực thi, đây là Binding của chức năng gọi hàm đến định nghĩa hàm Định nghĩa. Ràng buộc có thể được phân loại là ràng buộc liên kết tĩnh và ’ràng buộc động.

Nếu nó đã biết trước thời gian chạy, hàm nào sẽ được gọi hoặc giá trị nào được phân bổ cho một biến, thì đó là một ràng buộc tĩnh. nếu nó được biết trong thời gian chạy, thì nó được gọi là binding ràng buộc động.


  1. Biểu đồ so sánh
  2. Định nghĩa
  3. Sự khác biệt chính
  4. Phần kết luận

Biểu đồ so sánh:

Cơ sở để so sánhLiên kết tĩnhLiên kết động
Sự kiện xảy raCác sự kiện xảy ra tại thời điểm biên dịch là "Liên kết tĩnh".
Các sự kiện xảy ra trong thời gian chạy là "Liên kết động".
Thông tinTất cả thông tin cần thiết để gọi một hàm được biết tại thời điểm biên dịch.Tất cả thông tin cần gọi một chức năng đến để biết trong thời gian chạy.
Lợi thếHiệu quả.Uyển chuyển.
Thời gianThi công nhanh.Thực hiện chậm.
tên thay thếBinding sớm.Ràng buộc muộn.
Thí dụChức năng gọi quá tải, toán tử quá tải.Hàm ảo trong C ++, ghi đè các phương thức trong java.

Định nghĩa của Binding tĩnh

Khi trình biên dịch thừa nhận tất cả thông tin cần thiết để gọi một hàm hoặc tất cả các giá trị của các biến trong thời gian biên dịch, nó được gọi làliên kết tĩnhSọ. Vì tất cả các thông tin cần thiết đều được biết trước khi chạy, nó làm tăng hiệu quả của chương trình và nó cũng giúp tăng tốc độ thực hiện của chương trình.


Liên kết tĩnh làm cho một chương trình rất hiệu quả, nhưng nó làm giảm tính linh hoạt của chương trình, vì ‘các giá trị của biến và hàm gọi hàm Gọi được xác định trước trong chương trình. Liên kết tĩnh được thực hiện trong một chương trình tại thời điểm mã hóa.

Quá tải một hàm hoặc một toán tử là ví dụ về đa hình thời gian biên dịch, tức là Binding tĩnh.

Triển khai liên kết tĩnh trong C ++ với một ví dụ về quá tải

#inc loại sử dụng không gian tên std; quá tải lớp {int a, b; công khai: int load (int x) {// hàm tải đầu tiên (). a = x; cout << "Giá trị của x là" <func (); // Câu lệnh trên quyết định hàm class nào sẽ được gọi. p = & d1; // Vlaue của con trỏ thay đổi. p-> func (); // Câu lệnh trên quyết định hàm class nào sẽ được gọi. p = & d2; // Một lần nữa vlaue của con trỏ thay đổi. p-> func (); // Câu lệnh trên quyết định hàm class nào sẽ được gọi. trả về 0; }

Ở đây, giá trị của con trỏ thay đổi khi chương trình đang được thực thi và giá trị của con trỏ quyết định hàm lớp nào sẽ được gọi. Vì vậy, ở đây, thông tin được cung cấp trong thời gian chạy, cần có thời gian để liên kết dữ liệu làm chậm quá trình thực thi.

  1. Các sự kiện xảy ra tại thời điểm biên dịch như, mã chức năng được liên kết với lệnh gọi hàm hoặc gán giá trị cho một biến, được gọi là liên kết tĩnh / đầu. Ngược lại, khi các tác vụ này được hoàn thành trong thời gian chạy, chúng được gọi là Binding động / trễ.
  2. Hiệu quả nâng cấp trong Binding tĩnh, vì tất cả dữ liệu được thu thập trước khi thực hiện. Nhưng trong Binding động, dữ liệu được thu thập trong thời gian chạy để chúng ta có thể quyết định giá trị nào để gán một biến và hàm nào sẽ được gọi trong thời gian chạy, điều này làm cho việc thực thi trở nên linh hoạt.
  3. Liên kết tĩnh làm cho việc thực thi chương trình ’nhanh hơn vì tất cả dữ liệu cần thiết để thực hiện chương trình được biết trước khi thực hiện. Trong dữ liệu liên kết động dữ liệu cần thiết để thực thi một chương trình được trình biên dịch biết đến tại thời điểm thực hiện, cần có thời gian để liên kết các giá trị với các định danh; do đó, nó làm cho chương trình thực hiện chậm hơn.
  4. Liên kết tĩnh còn được gọi là Binding sớm vì mã chức năng được liên kết với lệnh gọi hàm trong thời gian biên dịch, sớm hơn Binding động trong đó mã chức năng được liên kết với lệnh gọi trong thời gian chạy do đó còn được gọi là liên kết trễ.

Phần kết luận:

Tuy nhiên, chúng tôi kết luận rằng khi chúng tôi có kiến ​​thức trước về các giá trị của biến và gọi hàm, chúng tôi áp dụng ràng buộc tĩnh. Ngược lại, trong Binding động, chúng tôi cung cấp tất cả thông tin tại thời điểm thực hiện.