gpt4 book ai didi

c++ - C++中名称查找和名称绑定(bind)之间的区别

转载 作者:行者123 更新时间:2023-11-30 05:15:13 25 4
gpt4 key购买 nike

在 C++ 中,名称绑定(bind)和名称查找之间有区别吗?工作草案 C++14 标准 (N4296) 将 (3.4) 中的名称查找定义为

Name lookup associates the use of a name with a declaration (3.1) of that name.

我在标准中找不到名称绑定(bind)的定义,但 IBM 知识中心的 XL C/C++ 编译器文档定义了:

Name binding is the process of finding the declaration for each name that is explicitly or implicitly used in a template.

这两个定义之间的唯一区别似乎是 (1) 名称绑定(bind)特指模板中使用的名称和 (2) 名称绑定(bind)指的是名称,而名称查找是指使用 一个名字。

然而,C++标准中关于重载决议的部分(13.3)经常提到绑定(bind),但没有定义它。在此上下文中使用“绑定(bind)”的方式使得绑定(bind)似乎是指参数与函数参数的关联。

起初,这个定义似乎不同于其他两个定义,认为它符合(广泛地)名称查找的定义,如果我们假设函数的名称被绑定(bind)到它的通过比较参数和参数的类型来声明。这不完全是第 (13.3) 节中使用的意义,但我试图在没有适当定义的情况下理解标准。

简而言之,如果有人对“名称绑定(bind)”或“绑定(bind)”有一个很好的定义,我将不胜感激。

最佳答案

阅读了 Wilson & Clark Comparative Programming Languages 的相关部分后,我想我对这个主题有了更好的理解。如果我猜对了,术语“绑定(bind)”涵盖了所有相关术语,包括名称-声明绑定(bind)、名称-类型绑定(bind)、声明-引用绑定(bind)、引用-值绑定(bind)和名称-值绑定(bind)。

“名称查找”似乎是名称声明绑定(bind)的同义词。 C++14 标准中“绑定(bind)”的其他用途涉及其他绑定(bind)类型的各种组合。

如有错误请指正!

关于c++ - C++中名称查找和名称绑定(bind)之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43195735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com