什么是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等之类的东西时,同样的情况也适用于在标准命名空间中查找的参数<<和>>。