클래스에 정의된 Friend 함수에 액세스
C에서 friend 함수에는 클래스의 private 및 protected 멤버에 대한 액세스 권한이 부여됩니다. 제공된 코드는 세 가지 친구 함수인 fun, fun2 및 fun3을 사용하여 A 클래스를 정의합니다. fun 및 fun3에는 문제 없이 액세스할 수 있지만 fun2에 액세스하는 데 문제가 있습니다.
fun2에 액세스하려면, 두 가지 옵션이 있습니다:
1. Friend 함수의 전역 선언:
클래스 정의 후에 전역 범위에서 friend 함수를 선언할 수 있습니다. 이는 함수가 외부에 존재하며 클래스의 친구임을 컴파일러에 알립니다. 예:
<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>
명시적으로 액세스하든 정적 멤버 함수로 액세스하든 상관없이 전역 범위에서 friend 함수를 선언해야 한다는 점을 기억하세요.
위 내용은 C 클래스에 정의된 Friend 함수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!