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 命名空间中查找这些内容。
广告