访问类中定义的友元函数
使用友元函数时,必须了解如何定义和访问它们。由于友元函数不是类的成员,因此在类外部访问它们可能需要特殊考虑。
在提供的代码片段中:
class A {
public:
friend void fun(A a){std::cout 友元函数 fun() 和 fun3() 在类中定义,但不在全局范围中声明。由于参数类型为 A,因此可以使用参数相关查找 (ADL) 直接访问 fun(),但如果没有在全局范围内声明,则无法访问 fun2()。
要正确访问 fun2() ,除了在类中定义为友元函数之外,还应该全局声明它:
class A {
public:
friend void fun(A a){std::cout 在此修改版本中,fun2()可以作为普通函数在类外部访问。
但是,建议以通常的方式定义友元函数,在类外部但声明作为朋友:
class A {
friend void fun(A a);
friend void fun2();
friend void fun3();
};
void fun(A a) { std::cout 此方法可确保正确定义和声明所有友元函数,使它们按预期可访问和使用。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3