访问类中定义的友元函数
使用友元函数时,了解它们的定义和访问方式至关重要。由于友元函数不是类的成员,因此在类外部访问它们可能需要特殊考虑。
在提供的代码片段中:
<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中文网其他相关文章!