美文网首页
c++ 名字查找

c++ 名字查找

作者: 心理健康最重要 | 来源:发表于2020-03-27 22:19 被阅读0次
名字查找是当程序中出现一个名字时,将其与引入它的声明联系起来的过程。
#include<iostream>

int  main(){  
 std::cout << "test\n" << std::endl;
 return 0;
}
在了解以下步骤之前要学习几个术语:
  • 无限定名字(Unqualified name):即并非出现在作用域解析运算符 :: 右边的名字

  • 无限定的名字查找

  • 有限定名字(qualified name):是出现在作用域解析操作符 :: 右边的名字

  • 有限定的名字查找

  • 实参依赖查找(argument-dependent lookup):一组对无限定名查找的规则,在通常无限定名字查找所考虑的作用域和命名空间之外,还在其各个实参的命名空间中查找这些函数。

  • 模板实参推导 :为实例化一个函数模板,每个模板实参都必为已知的,但并非必须指定每个模板实参。只要可能,编译器都会从函数实参推导缺失的模板实参。

为了编译std::cout << "test\n" << std::endl;编译器进行了以下这些工作
  1. 名字std进行无限定名字查找,在头文件<iostream>中找到命名空间std的声明;
  1. 名字cout进行有限定名字查找,在命名空间std中找到一个变量的声明;
  1. 对第一个operator<<名字进行实参依赖查找(ADL),ADL在左实参数cout的命名空间std中找到多个std::ostream::operator<<重载函数模板的声明;
  2. 编译器进行模板实参推导,推导出std::ostream& std::operator<< <std::char_traits<char>>(std::ostream&,const char*);
  3. 名字endl进行有限定名字查找,在命名空间std中找到一个函数模板声明
  1. 对std::endl进行模板实参推导,推导出 std::ostream& std::endl<char, std::char_traits<char>>(std::ostream&);
  2. 第二个operator<<进行实参依赖查找,和模板实参推导,得到std::ostream& std::operator<< (std::ostream&);
一个语句的名字查找就已经完成了,菜鸡的学习笔记,如有错误非常希望您能指出

相关文章

  • c++ 名字查找

    名字查找是当程序中出现一个名字时,将其与引入它的声明联系起来的过程。 在了解以下步骤之前要学习几个术语: 无限定名...

  • C++ 查找算法

    C++ 查找算法 待续

  • leetcode 69. x 的平方根

    leetcode 二分查找:C++:

  • 基础算法笔记 python和C++

    二分查找 python code 选择排序 python code c++ code 快速排序 python c++

  • c++ 查找

    // 顺序查找 int SequentialSearch(vector & v, int k) { for (in...

  • Linux find查找命令

    以名字查找 find /etc -name init 查找名字是init的文件 find /etc -n...

  • [C++] 名称查找

    1. 本地名称和全局名称 我们都知道在诸如这般的代码中: 这个读取数据的语句指涉的是local变量x,而不是glo...

  • 排序查找c++

    排序算法 选择排序 顺序查找 二分查找

  • linux find

    查找文件 find ./ -type f 查找目录 find ./ -type d 查找名字为test的文件或目录...

  • 文件的查找

    按名字查找 find 路径 -name "名字" 例如:find / -name "*name*"

网友评论

      本文标题:c++ 名字查找

      本文链接:https://www.haomeiwen.com/subject/snzluhtx.html