프렌드 클래스 / 프렌드 함수

윤이령·2026년 4월 21일

프렌드 클래스

  • 대상 클래스 내부에 friend 키워드로 선언
  • 대상클래스의 객체처럼 모든 멤버에 접근 가능
class gs_engine : public ic_engine{
public:
	gs_engine();
    ~gs_engine();
private:
	void acceleration_output();
    //프렌드 클래스 선언
    friend class automobile;
};
  • 접근 지정자와 상관없이 automobile클래스 내부에서 gs_engine클래스의 모든 멤버 변수, 함수에 접근 가능
  • automobile을 상속받은 클래스는 friend 속성 물려받지 않음
  • 자식 클래스에서도 gs_engine 에 접근하게 허용하려면 friend 클래스로 선언해야 함

프렌드 함수

class gs_engine : public ic_engine{
public:
	gs_egine();
    ~gs_engine();
private:
	void acceleration_output();
    //자동차는 엔진 내부 다 봄
    friend class automobile;
    
    //프렌드 함수 선언 -> accelerator 클래스의 특정 함수 하나만 특별 허용
    //accelerator 클래스안에 acceleration_output함수 로직에서gs_egine 멤버 변수접근, 멤버 함수 호출가능 
    friend void accelerator::acceleration_output(gs_engine & engine);
    
    //프렌드 함수 선언과 전역 함수 정의 -> 밖에서 만든 함수인데, 내부 비밀 다 볼 수 있는 친구
    //외부함수인 acceleration_output_ex 에서 gs_egine 멤버 변수 접근, 멤버 함수 호출 가능
    friend void acceleration_output_ex(gs_engine &engine) {...};
};

0개의 댓글