首页 > 后端开发 > C++ > 正文

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

Susan Sarandon
发布: 2024-11-10 08:39:02
原创
504 人浏览过

How to Access Friend Functions Defined in a C   Class?

访问类中定义的友元函数

在 C 中,友元函数被授予访问类的私有和受保护成员的权限。提供的代码定义了一个具有三个友元函数的类 Afunfun2fun3。虽然 funfun3 可以毫无问题地访问,但访问 fun2 时出现问题。

要访问 fun2,您有两个选择:

1。友元函数的全局声明:

您可以在类定义之后在全局范围内声明友元函数。这通知编译器一个函数存在于外部并且是该类的友元。例如:

<code class="cpp">#include <iostream>

class A {
public:
    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() {
    std::cout << "I'm here3" << std::endl;
}

int main() {
    fun(A()); // Works
    fun2(); // Now works
    fun3(); // Works
}</code>
登录后复制

2。显式成员函数调用:

您可以显式调用友元函数作为类的成员函数。但是,这需要将友元函数标记为静态(如果它们没有 this 参数)。例如:

<code class="cpp">#include <iostream>

class A {
public:
    friend static void fun(A a);
    friend static void fun2();
    friend static void fun3();
};

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

int main() {
    fun(A()); // Works
    A::fun2(); // Works
    fun3(); // Works
}</code>
登录后复制

记住,全局范围内的友元函数的声明是必要的,无论它是显式访问还是作为静态成员函数。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板