본문 바로가기
카테고리 없음

프렌드(friend) 사용법 (함수, 클래스) 총정리

by sftt 2023. 11. 27.

프렌드(friend) 사용법 (함수, 클래스) 총정리

1. 프렌드 함수 (Friend Function)

프렌드 함수는 클래스의 멤버 함수가 아니지만, 해당 클래스의 private 멤버에 접근할 수 있는 함수입니다. 프렌드 함수를 선언하려면 함수 원형 앞에 friend 키워드를 사용하고, 클래스의 선언 내부에 해당 함수를 정의해야 합니다.

프렌드 함수 선언 예시:

class MyClass {
private:
    int privateMember;
public:
    friend void friendFunction(MyClass obj); // 프렌드 함수 선언
};

// 프렌드 함수 정의
void friendFunction(MyClass obj) {
    obj.privateMember = 10; // MyClass의 private 멤버에 접근
}

2. 프렌드 클래스 (Friend Class)

프렌드 클래스는 한 클래스가 다른 클래스의 private 멤버에 접근할 수 있는 클래스입니다. 프렌드 클래스를 선언하려면 friend 키워드를 사용하여 선언하고자 하는 클래스를 지정해야 합니다.

프렌드 클래스 선언 예시:

class MyClass {
private:
    int privateMember;
public:
    friend class FriendClass; // 프렌드 클래스 선언
};

class FriendClass {
public:
    void accessPrivateMember(MyClass obj) {
        obj.privateMember = 10; // MyClass의 private 멤버에 접근
    }
};

프렌드 함수와 프렌드 클래스의 고려사항

  • 프렌드 함수와 프렌드 클래스는 해당 클래스의 private 멤버에 접근할 수 있는 권한을 가지므로, 적절한 사용과 접근 제한을 고려해야 합니다.
  • 클래스의 캡슐화와 정보 은닉 원칙에 위배될 수 있으므로, 필요한 경우에만 사용하는 것이 좋습니다.
  • 프렌드 함수나 프렌드 클래스의 경우, 객체 내부의 private 멤버에 자유롭게 접근할 수 있기 때문에 유지보수와 관리에 불편을 초래할 수 있습니다. 필요한 경우에만 사용하고, 신중하게 결정해야 합니다.

프렌드 함수와 프렌드 클래스는 C++에서 클래스의 정보 은닉을 유지하면서 특정 함수나 클래스에 접근 권한을 부여하기 위해 사용됩니다. 하지만 사용에 주의를 기울여야 하며, 적절한 사용법을 숙지하고 사용하는 것이 중요합니다.

댓글