C++ 中的“引數相關查詢”(“Koenig 查詢”)是什麼?


引數相關查詢(ADL)是一種在函式呼叫表示式中查詢不合格函式名的協議。

這些函式呼叫表示式包括對過載運算子的隱式函式呼叫。

除了通常的非限定名稱查詢所考慮的範圍和名稱空間外,函式名稱還在其引數的名稱空間中進行查詢。引數相關查詢使得可以使用在不同名稱空間中定義的運算子。 

示例

namespace MyNamespace{
   class A {};
   void f( A &a, int i) {}
}
int main() {
   MyNamespace::A a;
   f( a, 0 );    //calls MyNamespace::f
}

對函式 f 的呼叫查詢依賴於引數 a。同樣的情況也適用於 << 和 >> 等引數,當我們使用 cout、cin、endl 等內容時,將在 std 名稱空間中查詢它們。

更新於: 2020 年 2 月 12 日

227 次瀏覽

開啟你的 職業生涯

完成該課程即可獲得認證

開始使用
廣告
© . All rights reserved.