ในส่วนนี้เราจะมาดูกันว่าอะไรคือ 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