Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Argument-Dependent Lookup (ADL) หรือ Koenig Lookup ใน C++ คืออะไร


Argument-Dependent Lookup (ADL) หรือ Koenig Lookup เป็นกติกาการค้นหาชื่อฟังก์ชันที่ไม่ได้ระบุนamespace (unqualified) ในนิพจน์การเรียกฟังก์ชัน

รวมถึงการเรียก operator overload แบบ implicit ด้วย

ชื่อฟังก์ชันจะถูกค้นหาใน namespace ของ arguments (อาร์กิวเมนต์) เพิ่มเติมจาก scope และ namespace ปกติ ทำให้สามารถใช้ operator ที่定义在 namespace อื่นได้

ตัวอย่าง

namespace MyNamespace {
    class A {};
    void f(A &a, int i) {}
}

int main() {
    MyNamespace::A a;
    f(a, 0);  // เรียก MyNamespace::f ผ่าน ADL
}

การค้นหา f ขึ้นอยู่กับ argument a ที่อยู่ใน MyNamespace กรณีเดียวกันกับ << และ >> ที่ค้นหาใน std namespace เมื่อใช้ cout, cin, endl