본문 바로가기

교육 노트/C++ 심화강의

[C++ 때려잡기] C++ 심화강의 8 Friend function, friend class

2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 1 객체 지향 프로그래밍과 클래스

2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 2 접근 한정자

2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 3 생성자와 소멸자

2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 4 복사 생성자와 깊은 복사

2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 5 this 포인터

2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 6 Class 선언과 정의

2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 7 inline 함수


프랜드란?

친구란 의미이다.


친구사이에서는 과자도 한입만 하면서 뺏어먹고 필기구도 두고 오면 빌려가는 법이다.


1. Friend

외부에서 클래스의 private 멤버에 접근가능하도록 허용하는 키워드
정보은닉에 일종의 예외

해당 키워드를 통하여 프랜드 함수와 프랜드 클래스를 만들수있다.



2. 프랜드 함수


hit 함수는 그냥 전역 함수이다.

그러나 마리오 클래스의 hp에 직접 접근하고싶다.

그럴때 해당 함수가 내 친구라고 friend 키워드로 class 정의에 써놓으면

hit함수는 마리오의 맴버변수에 직접 접근할수있다.


2. 프랜드 클래스


에너미 클래스에서 마리오의 맴버변수에 직접 접근하고 싶다.

그럴때 애너미가 내 친구(어감이 이상하긴 하지만) 라고 마리오 클래스의 정의에 기록하며 된다.



프랜드 키워드는 정보은닉의 일종의 예외이다.

그래서 남용해서는 안된다. 프랜드 키워드 없이도 충분히 해결 가능 하다면 friend 없이 사용하는것이 바람직하다.

728x90