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 次浏览

开启你的 职业生涯

完成该课程即可获得认证

开始使用
广告