当前位置: 首页 > 编程笔记 >

什么是C ++中的“依赖于参数的查找”(“ Koenig查找”)?

皇甫飞跃
2023-03-14
本文向大家介绍什么是C ++中的“依赖于参数的查找”(“ Koenig查找”)?,包括了什么是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等之类的东西时,同样的情况也适用于在标准命名空间中查找的参数<<和>>。

 类似资料:
  • 这是关于cppreference的描述。com说 模板中使用的依赖名称的查找将推迟到模板参数已知时,此时[…]ADL检查从模板定义上下文或模板实例化上下文可见的具有外部链接的函数声明。 与此相反,以下代码段可以使用三个编译器(MSVC、clang、gcc)很好地编译: Foo是CallFoo中的从属名称:它取决于模板参数T。但是,尽管违反了上述两条规则,编译器还是找到了函数Foo。 从的定义或实例

  • 目前,在我的中有一条关于支持库不使用相同版本的警告。 所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到了27.0.1、23.4.0版本。示例包括com.android.support:animated-vector-drawable:27.0.1和com.android.support:cardview-v7:23.4.0 还有一个很好的方

  • 当我尝试编译这段代码时 对于g 4.8.2,我得到以下错误消息 (与3.4版本的叮当声几乎相同)。 首先,我认为代码是正确的,应该进行编译,因为foobar是模板声明中的一个依赖名称,应该仅在模板实例化的第二阶段进行查找。在最后一行中完成此操作时,已声明“foobar(int)”。顺便说一句,当我取消注释最上面的行时,代码会编译,但这两个声明都在实例化之前,所以这应该无关紧要。 其次,我觉得错误信

  • 主要内容:静态查找表和动态查找表,关键字,如何进行查找?在日常生活中,几乎每天都要进行一些查找的工作,在电话簿中查阅某个人的电话号码;在电脑的文件夹中查找某个具体的文件等等。本节主要介绍用于查找操作的 数据结构—— 查找表。 查找表 是由同一类型的数据元素构成的集合。例如电话号码簿和字典都可以看作是一张查找表。 一般对于查找表有以下几种操作: 在查找表中查找某个具体的数据元素; 在查找表中插入数据元素; 从查找表中删除数据元素; 静态查找表和动态查找表

  • 问题内容: 什么是参数化查询?在PHP和MySQL中,这种查询的示例是什么? 问题答案: 参数化查询(也称为 预处理语句)是预编译SQL语句的一种方法,因此您需要提供的只是需要插入语句中的“参数”(认为“变量”)即可。被执行。它通常用作防止SQL注入攻击的手段。 您可以在PHP的PDO页面(PDO是数据库抽象层)上阅读有关这些内容的更多信息,但是如果您使用的是mysqli数据库接口,也可以使用它们

  • 以下程序在C 20中编译良好: 但在C 17中,它会产生一个错误: 你能告诉我C20有什么变化让它工作吗?