[C++] Friend Function이란?: 친구 함수, 개념과 사용 방법, 장점과 단점

2024. 5. 13. 08:00· C, C++
목차
  1. 💋 Friend Functions이란?
  2. ✔️ 개념
  3. ✔️ 사용 방법
  4. 💋 Friend Function의 장점과 단점
  5. ✔️ 장점
  6. ✔️ 단점
반응형
반응형

 

💋 Friend Functions이란?

✔️ 개념

Friend Function은 특정 클래스의 private 또는 protected 멤버에 직접 접근할 수 있는 권한을 가진, 클래스 외부에서 정의된 함수입니다. (이게 뭔 짬뽕..?)

친구 함수는 클래스의 멤버 함수가 아니지만, 클래스 내에서 friend 키워드를 사용하여 친구로 선언됩니다.

⇒ 멤버 함수는 아닌데, 그래도 private 또는 protected 변수랑 함수에 직접 접근이 가능?!!

✔️ 사용 방법

친구 함수를 선언하기 위해서는 함수 앞에 friend 키워드를 붙이면 됩니다.

class MyClass {
private:
    int data;

public:
    MyClass(int value) : data(value) {}

    friend void showData(MyClass& obj); // friend function 선언
};

// member function 아니고 그냥 외부 function인데 friend function인,,,
void showData(MyClass& obj) {
    std::cout << "Data: " << obj.data << std::endl; // 직접 접근 가능
}

독특한 설정인데,, 뭐가 좋을까요?

💋 Friend Function의 장점과 단점

✔️ 장점

  • 효율성
    • 멤버 데이터에 직접 접근할 수 있기 때문에, 접근자(getter)나 설정자(setter)와 같은 추가적인 함수 호출 없이 데이터를 읽거나 수정할 수 있습니다.
    • 특히 연산자 오버로딩에서 매우 유용하며, 성능을 개선할 수 있습니다.
  • 유연성
    • 연산자 오버로딩을 클래스의 멤버 함수로 정의할 때는 두 번째 피연산자만을 매개변수로 받을 수 있지만, friend 함수를 사용하면 두 피연산자 모두를 매개변수로 받을 수 있어, 표현이 더 자연스러울 수 있습니다.

✔️ 단점

  • 캡슐화 위반
    • 친구 함수는 클래스의 캡슐화 원칙을 위반할 수 있습니다.
    • 캡슐화는 객체의 내부를 외부로부터 숨기는 것을 목적으로 하는데, 친구 함수는 이러한 내부 구현에 직접 접근할 수 있기 때문에, 클래스의 내부 변경이 외부에 영향을 미칠 수 있습니다.
  • 유지 보수
    • 클래스의 내부 구현이 변경될 경우, 해당 클래스의 친구 함수들 또한 수정해야 할 수 있어 유지 보수의 복잡성을 증가시킬 수 있습니다.

개인적으로 저는 단점이 더 크게 느껴지기는 합니다만,,,, (?)

여러분의 생각은 어떤가요?

 

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'C, C++' 카테고리의 다른 글

[C++] 연산자 오버로딩 (Operator Overloading): 개념, 구현 방법 (friend function에서, method function에서), 주의사항  (0) 2024.05.10
[C++] static 키워드 제대로 알고 사용하자!: 클래스에서 정적 변수와 정적 함수 사용 방법, 특징, 주의사항  (0) 2024.05.09
[C++] const 제대로 알고 사용하자!: 변수, 포인터, 함수, 파라미터에서 각각 사용되는 const의 의미 파헤치기  (0) 2024.05.08
[C++] Inline Functions: 인라인 함수 왜 쓰지? 사용 방법과 장단점  (1) 2024.05.07
[C++] 참조(Reference)란?: 참조 vs 포인터 vs 일반변수, 반환 타입으로 참조, & 연산자의 사용방법  (0) 2024.04.29
  1. 💋 Friend Functions이란?
  2. ✔️ 개념
  3. ✔️ 사용 방법
  4. 💋 Friend Function의 장점과 단점
  5. ✔️ 장점
  6. ✔️ 단점
'C, C++' 카테고리의 다른 글
  • [C++] 연산자 오버로딩 (Operator Overloading): 개념, 구현 방법 (friend function에서, method function에서), 주의사항
  • [C++] static 키워드 제대로 알고 사용하자!: 클래스에서 정적 변수와 정적 함수 사용 방법, 특징, 주의사항
  • [C++] const 제대로 알고 사용하자!: 변수, 포인터, 함수, 파라미터에서 각각 사용되는 const의 의미 파헤치기
  • [C++] Inline Functions: 인라인 함수 왜 쓰지? 사용 방법과 장단점
깃짱
깃짱
연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
반응형
깃짱
깃짱코딩
깃짱
전체
오늘
어제
  • 분류 전체보기
    • About. 깃짱
    • Weekly Momentum
      • 2024
    • PROJECT
      • AIGOYA LABS
      • Stamp Crush
      • Sunny Braille
    • 우아한테크코스5기
    • 회고+후기
    • Computer Science
      • Operating System
      • Computer Architecture
      • Network
      • Data Structure
      • Database
      • Algorithm
      • Automata
      • Data Privacy
      • Graphics
      • ETC
    • WEB
      • HTTP
      • Application
    • C, C++
    • JAVA
    • Spring
      • JPA
      • MVC
    • AI
    • MySQL
    • PostgreSQL
    • DevOps
      • AWS
      • 아키텍처
    • frontend
      • HTML+CSS
    • NextJS
    • TEST
    • Industrial Engineering
    • Soft Skill
    • TIL
      • 2023
      • 2024
    • Linux
    • Git
    • IntelliJ
    • ETC
      • 日本語

블로그 메뉴

  • 홈
  • 깃허브

인기 글

최근 글

태그

  • 컴포지션
  • 스트림
  • 조합
  • Stream
  • 람다와스트림
  • 우테코
  • 우아한테크코스
  • Java
  • 예외
  • 우테코5기
  • TDD
  • 함수형프로그래밍
  • 레벨로그
  • 상속
  • Composition
  • 상속과조합
  • OOP
  • lamda
  • 람다
  • 우아한테크코스5기
hELLO · Designed By 정상우.v4.2.0
깃짱
[C++] Friend Function이란?: 친구 함수, 개념과 사용 방법, 장점과 단점
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.