ในส่วนนี้เราจะมาดูกันว่าอะไรคือ Early Binding และ Late Binding ใน C++ Thebinding หมายถึงกระบวนการแปลงตัวระบุเป็นที่อยู่ สำหรับแต่ละตัวแปรและฟังก์ชันการผูกนี้จะเสร็จสิ้น สำหรับฟังก์ชัน จะจับคู่การเรียกกับนิยามฟังก์ชันที่ถูกต้องโดยคอมไพเลอร์ การรวมทำได้ทั้งที่คอมไพล์ไทม์หรือรันไทม์
การผูกมัดในช่วงต้น
นี่คือความหลากหลายของเวลารวบรวม ที่นี่จะเชื่อมโยงที่อยู่โดยตรงกับการเรียกใช้ฟังก์ชัน สำหรับการโอเวอร์โหลดฟังก์ชันเป็นตัวอย่างของการผูกในช่วงต้น
ตัวอย่าง
#include<iostream> using namespace std; class Base { public: void display() { cout<<" In Base class" <<endl; } }; class Derived: public Base { public: void display() { cout<<"In Derived class" << endl; } }; int main(void) { Base *base_pointer = new Derived; base_pointer->display(); return 0; }
ผลลัพธ์
In Base class
การผูกมัดล่าช้า
นี่คือความแตกต่างของรันไทม์ ในการโยงประเภทนี้ คอมไพเลอร์จะเพิ่มโค้ดที่ระบุประเภทของอ็อบเจ็กต์ขณะรันไทม์ จากนั้นจึงจับคู่การเรียกที่มีคำจำกัดความ rightfunction ทำได้โดยใช้ฟังก์ชันเสมือน
ตัวอย่าง
#include<iostream> using namespace std; class Base { public: virtual void display() { cout<<"In Base class" << endl; } }; class Derived: public Base { public: void display() { cout<<"In Derived class" <<endl; } }; int main() { Base *base_pointer = new Derived; base_pointer->display(); return 0; }
ผลลัพธ์
In Derived class