访问类中定义的友元函数
在 C 中,友元函数被授予访问类的私有和受保护成员的权限。提供的代码定义了一个具有三个友元函数的类 A:fun、fun2 和 fun3。虽然 fun 和 fun3 可以毫无问题地访问,但访问 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中文网其他相关文章!