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 阅读

开启您的 职业生涯

完成课程并获得认证

开始
广告