>  기사  >  백엔드 개발  >  C의 클래스에 정의된 Friend 함수에 액세스하는 방법은 무엇입니까?

C의 클래스에 정의된 Friend 함수에 액세스하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-06 22:22:02348검색

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

클래스에 정의된 Friend 함수에 액세스

C에서 friend 함수는 클래스 내에 선언되지만 클래스의 비공개 및 보호 멤버에 액세스할 수 있습니다. 다음 코드 조각을 고려하십시오.

<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>

정의 이런 방식으로 친구 기능을 사용하면 클래스 내부와 외부 모두에서 액세스할 수 있습니다.

위 내용은 C의 클래스에 정의된 Friend 함수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.