🍒 Language/C++

[C++] 캡슐화

후추 집사 2023. 2. 7. 19:16

캡슐화의 의미

객체는 스스로 독립적이며 기초적인 부품처럼 사용할 수 있다.

캡슐화를 위해 추상화(속성과 동작 정의)와 정보 은폐(외부에서 사용하는 기능만 공개 / 멤버 변수는 숨기고 멤버 함수를 통해 멤버 변수에 접근)가 사용된다. 

정보 은폐(몰라도 된다, 몰라야 한다)의 예시

자동차의 예시를 들 수 있다.

자동차를  타는 사람은 타는 방법만 알면 되고 자동차 부품의 내부 동작은 몰라도 된다. 불필요한 정보는 숨김으로써 사용자는 최소한의 정보만으로 부품을 쉽게 사용할 수 있다. 

그리고 모터 제어 등 치명적인 부분은 부주의한 사용으로부터 스스로를 방어하기 위해 사용자가 몰라야 한다. 

 

추가로, 몰라야 하는 또다른 이유로는 클래스의 안정적인 기능 개선이 있다. 클래스의 성능을 개선하기 위해 비공개 영역을 수정하면 공개 영역만 알고 있는 사용자들은 객체를 원래 쓰던 방법 그대로 사용할 수 있을 것이다. 반면 공개된 영역을 수정할 필요가 있다면 이때는 기존 객체와 호환성을 잃게 된다. 

min, max

cdecl 호출 규약

 

memset, memcpy (메모리 관리) 복사 생성자를 만들어야 하는 이유