방프리

17.08.21. Effective C++ 1. C++에 왔으면 C++의 법을 따릅시다. (항목23) 본문

C++/Effective C++

17.08.21. Effective C++ 1. C++에 왔으면 C++의 법을 따릅시다. (항목23)

방프리 2020. 1. 14. 01:26

항목 23 : 멤버 함수보다는 비멤버 비프렌드 함수와 더 가까워지자 

 

-객체지향적으로 생각한다면 멤버 함수는 가장 뛰어난 함수입니다.

관련 클래스의 데이터를 기반으로 동작하기도 하고, 관련 클래스에 묶여있기 때문입니다.

하지만 이는 잘못된 정보라고 필자는 말합니다. 멤버 함수의 남용은 객체지향의 기본 3대 요소 중 하나인

캡슐화를 해칠 가능성이 매우 크다고 합니다. 

또한 비멤버 함수를 사용하면 패키징 유연성이 높아지는 장점도 가질 수 있습니다.

한마디로 멤버 함수가 적으면 적을 수록 해당 클래스의 멤버 변수에 접근하는 빈도가 점점 줄어든다는 뜻입니다.

비프렌드 함수도 마찬가지 입니다. 프렌드 함수를 사용하게 되면 해당 클래스의 멤버 변수를

private로 선언하더라도 접근이 가능해지기 때문에 캡슐화의 의도를 해칠 가능성이 매우 커지게 됩니다.

STL 문법을 사용할 때 선언하는 vector.h, list.h, algorithm.h 등의 헤더를 통해 이 항목이 충실히 지켜지고 있음을

확인할 수 있습니다,

 

이것만은 잊지말자!

- 멤버 함수보다는 비멤버 비프렌드 함수를 자주 쓰도록 합시다. 캡슐화 정도가 높아지고, 패키징 유연성도 커지며,

기능적인 확장성도 늘어납니다.

 

Comments