
<aside> 💡 목차
</aside>
00:01:50
이전시간 복습…
그냥 생성자 소멸자 얘기함...
요즘엔 IDE에서 클래스 다이어그램을 그려준다고?
00:04:00

클래스 다이어그램
그림으로 표현하는 클래스 구조
이름만 적을수있고
이름안에 속성만 넣을수도있고
행위만 넣을수도있고
둘 다 넣을수도 있다는 말

거기에 더해서
접근자까지 추가할수있음
- 프라이빗 속성이다!
+ 퍼블릭 속성이다!
라는 의미..
우리 수업에선 클래스 다이어그램을 그리진 않음
근데 이런 설계는 매우매우 중요하다~ 이말이여~
00:00:00

완전 주제가 바뀌어서
클래스는 데이터 하이딩때문에
외부에서 속성에 접근할수없지?/
제약사항이 많음... 개발자들이 인터페이스에 해당하는 무언가를 맨날 만들어줘야해서
그래서 CPP에선 프렌드라는 접두어를
멤버함수는 아니지만, 너는 내 친구니까 프라이빗 속성에 접근할 수 있게 해줄계~
라는 문법이 있다

class 선언부 안에
friend를 설정해두면,
friend함수는 클래스의 private 영역에 접근가능해진다.
하지만 friend함수는 클래스의 멤버가 아닌것을 기억해야한다!
그냥 friend함수에 private 멤버 변수에 접근할 수 있는 권한을 부여하는것!
friend는 그저 함수야! 일종의 백도어 기능을 갖춘!
이래서 CPP는 완벽한 객체가 아니라고 하는것이다..

제곧네 ㅎㅎ
프렌드는 멤버는 아니지만, 어소시에이티브 되어있다..(관련있다)

퍼블릭 영역에서 add라는 친구를 쓰게되는데
프렉션 두개 불러오는 함수잖아?
클래스 안에 그대로 두면 멤버함수임
근데 멤버함수가 아니라 함수잖아?
"누가" 라는 개념이 여기도 없음! 그냥 일반함수임!
일반 함수라도 friend라는놈이 작동할때 클래스 안에 작동해서, 프렌드란놈이 실행되면
write는 못하더라도 위 노란영역이 실행 가능하다
friend안쓰면 노란부분 실행 안돼
노란영역은 익명 객체 방식으로 리턴해주는데
익명객체라 레턴할때 객체가 생성이 될거고 생성된 객체자체를 반환하는 방식임
10:50 다시들어 뭐가 별개의 함수여?
00:13:00

fracion이라는 결과값을 fr3라는놈에 덮어씌우면
이름이 없는 오브젝트로 덮어쓰는거잖아?
기존 fr3라는놈이 fraction이라는 결과값이 그대로 덮어씌워짐
보내주신 이미지는 C++에서 친구 함수의 블록 다이어그램을 보여줍니다.
friend는 클래스 내부에 선언되어 비공개 및 보호된 멤버를 포함한
클래스의 모든 멤버에 액세스할 수 있는 함수입니다.
이는 public 및 private 멤버에만 액세스할 수 있는 일반 멤버 함수와 다릅니다.
다이어그램에서 친구 함수의 이름은 addFr입니다.
이 함수는 Fraction 객체에 대한 두 개의 생성자 참조를 매개변수로 받고 Fraction 객체를 반환합니다.
이 함수는 두 분수를 더한 후 결과를 반환합니다.
친구 함수 사용의 몇 가지 이점은 다음과 같습니다:
멤버 함수를 만들지 않고도 클래스의 비공개 및 보호된 멤버에 액세스할 수 있으므로
**코드를 간소화할 수 있습니다.**
비공개 및 보호된 멤버에 대한 액세스를 제어하면서도 다른 함수가 액세스하도록 허용하여
**캡슐화를 개선할 수 있습니다.**
00:14:00