首页 >后端开发 >C++ >如何访问类中定义的友元函数?

如何访问类中定义的友元函数?

Susan Sarandon
Susan Sarandon原创
2024-11-05 15:45:02797浏览

How to Access Friend Functions Defined Within a Class?

访问类中定义的友元函数

使用友元函数时,了解它们的定义和访问方式至关重要。由于友元函数不是类的成员,因此在类外部访问它们可能需要特殊考虑。

在提供的代码片段中:

<code class="cpp">class A {

public:
    friend void fun(A a){std::cout << "Im here" << std::endl;}
    friend void fun2(){ std::cout << "Im here2" << std::endl; }
    friend void fun3();
};</code>

友元函数 fun() 和 fun3( ) 在类内定义,但不在全局范围内声明。由于参数类型为 A,因此可以使用参数相关查找 (ADL) 直接访问 fun(),但如果没有全局范围内的声明,则无法访问 fun2()。

正确访问 fun2() ,除了在类内定义为友元函数外,还应该全局声明它:

<code class="cpp">class A {

public:
    friend void fun(A a){std::cout << "Im here" << std::endl;}
    friend void fun2();
    friend void fun3();
};

void fun2(){ std::cout << "Im here2" << std::endl; }</code>

在此修改版本中,fun2() 可以作为普通函数在类外访问。

但是,建议以通常的方式定义友元函数,在类之外但声明为友元:

<code class="cpp">class A {
   friend void fun(A a);
   friend void fun2();
   friend void fun3();
};

void fun(A a) { std::cout << "I'm here"  << std::endl; }
void fun2()   { std::cout << "I'm here2" << std::endl; }
void fun3();</code>

这种方法确保所有友元函数都被正确定义和声明,使它们可访问和可以按预期使用。

以上是如何访问类中定义的友元函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn