内联友元函数的可见范围
尽管在类中定义了内联友元函数,但它们的实际范围超出了类的边界。 C 标准规定,内联友元函数的名称引用在最近的封闭命名空间范围中声明的函数。
但是,在该命名空间内提供匹配声明之前,无法通过非限定或限定查找访问此声明的函数。范围。因此,从类本身、封闭作用域或成员函数直接调用友元函数将导致错误。
此限制源于以下事实:友元函数是在类中声明的,而不覆盖或重新定义现有的函数名称。因此,编译器无法识别类或封闭命名空间范围中的函数,直到在该命名空间中遇到显式声明为止。
要访问内联友元函数,您可以使用参数相关查找 (ADL) 。 ADL 允许编译器根据调用中使用的参数类型来搜索函数。这种方法符合以下原则:函数被认为与作为参数传递的类型“相关”。
以上是为什么我不能直接从定义类中调用内联友元函数?的详细内容。更多信息请关注PHP中文网其他相关文章!