클래스 내에 정의된 Friend 함수에 액세스
Friend 함수로 작업할 때는 해당 함수가 정의되고 액세스되는 방식을 이해하는 것이 중요합니다. 친구 함수는 클래스의 멤버가 아니므로 클래스 외부에서 해당 함수에 액세스하려면 특별한 고려 사항이 필요할 수 있습니다.
제공된 코드 조각에서:
class A {
public:
friend void fun(A a){std::cout friend 함수 fun() 및 fun3()은 클래스 내에서 정의되지만 전역 범위에서는 선언되지 않습니다. fun()은 A형의 인자로 인해 ADL(Argument-Dependent Lookup)을 사용하여 직접 접근할 수 있지만, fun2()는 전역 범위에 선언하지 않으면 접근할 수 없습니다.
fun2()를 올바르게 접근하려면 , 클래스 내에서 친구 함수로 정의되는 것 외에도 전역적으로 선언되어야 합니다.
class A {
public:
friend void fun(A a){std::cout 이 수정 버전에서는 fun2()를 클래스 외부에서 일반 함수로 접근할 수 있습니다.
그러나 친구 함수는 클래스 외부에서 일반적인 방식으로 정의하는 것이 좋지만 친구로서:
class A {
friend void fun(A a);
friend void fun2();
friend void fun3();
};
void fun(A a) { std::cout 이 접근 방식은 모든 친구 함수가 올바르게 정의 및 선언되어 의도한 대로 액세스하고 사용할 수 있도록 보장합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3