首页 > 后端开发 > C++ > 为什么我不能直接从定义类中调用内联友元函数?

为什么我不能直接从定义类中调用内联友元函数?

Linda Hamilton
发布: 2024-11-29 11:56:11
原创
795 人浏览过

Why Can't I Directly Call Inline Friend Functions from Within Their Defining Class?

内联友元函数的可见范围

尽管在类中定义了内联友元函数,但它们的实际范围超出了类的边界。 C 标准规定,内联友元函数的名称引用在最近的封闭命名空间范围中声明的函数。

但是,在该命名空间内提供匹配声明之前,无法通过非限定或限定查找访问此声明的函数。范围。因此,从类本身、封闭作用域或成员函数直接调用友元函数将导致错误。

此限制源于以下事实:友元函数是在类中声明的,而不覆盖或重新定义现有的函数名称。因此,编译器无法识别类或封闭命名空间范围中的函数,直到在该命名空间中遇到显式声明为止。

要访问内联友元函数,您可以使用参数相关查找 (ADL) 。 ADL 允许编译器根据调用中使用的参数类型来搜索函数。这种方法符合以下原则:函数被认为与作为参数传递的类型“相关”。

以上是为什么我不能直接从定义类中调用内联友元函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板