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

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

Barbara Streisand
Barbara Streisand原创
2024-11-06 22:22:02348浏览

How to Access Friend Functions Defined in a Class in C  ?

访问类中定义的友元函数

在 C 中,友元函数在类内声明,但可以访问类的私有和受保护成员。考虑以下代码片段:

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

void fun3() {
    std::cout << "I'm here3" << std::endl;
}</code>

访问 fun(A) 函数可以正常工作,因为它有一个 A 类型的参数,允许参数依赖查找找到它。但是,访问全局函数 fun2() 和 fun3() 时存在问题。

类内声明 fun2 使其成为友元函数,但未在全局范围内声明它。因此,在类外访问 fun2() 时:

  • fun2();导致错误。
  • A::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>

定义这种方式的friend函数允许在类内部和外部访问它们。

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

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