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 命名空间中查找它们。
广告