reference:
"명품 C++ Programming" / 황기태
"전문가를 위한 C++" / 마크 그레고리
캡슐화는 객체의 구성 요소들을 캡슐로 싸서 보호하고 볼 수 없게 하는 것으로, 객체의 가장 본질적인 특징이다. 다시 말해 객체는 캡슐화를 통해 외부의 접근을 통제하여 자신의 내부 요소들을 보호한다.
구성 객체들이 상호 통신을 하면서 시스템이 구동된다. 그러므로 객체를 완벽히 캡슐화하여 모든 요소를 보이지 않게 하고 외부의 접근으로부터 완전히 차단해서는 안된다. 객체들이 서로 정보를 교환하고 통신을 하기 위해 일부 요소의 공개 노출이 필요하다. 보통 멤버 함수를 Public으로 선언하여 외부에 공개한다.
외부에서 c++ 객체에게 어떤 작업을 요청하거나 상태를 알고자할 때 객체 내에 공개된 멤버 함수를 호출한다.
클래스는 객체를 정의하는 틀 혹은 설계도로서, 클래스에 멤버 변수와 멤버 함수를 선언한다. 그리고 이는 프로그래밍을 하는 과정에서 자료형과 같이 사용된다.
객체는 클래스라는 틀에서 찍어내어, 멤버 변수 메모리와 멤버 함수 코드를 실제 가지고 프로그램이 실행되는 동안 현존하는 실체 혹은 인스턴스이다. 이러한 객체들은 상호 별도 공간(메모리)에 생성된다. 특히 new 연산자를 통해 객체를 생성하면, 해당 객체에 대한 메모리는 힙 영역에 동적으로 할당된다.