데이터와 데이터를 다루는 함수가 분리되어 있다.
타입을 설계할 때, 그 타입을 다루는 함수를 작성할 때 마다 첫 번째 인자로 어떤 데이터를 다룰 것인지 주소값을 받아야 했다
→ 함수가 쓸데없이 길어지고, 함수 내부에서 포인터로 데이터를 다뤄야 한다.
함수의 이름을 항상 다르게 작성해야 한다.
C언어에서 함수 이름은 전역 이름공간을 사용한다.
→ 함수마다 이름을 다르게 지어줘야 한다.
프로그램을 확장하기 불편하다.
항상 어떤 함수가 필요한지 명확하게 호출해야 했다.
→ 프로그램에 수정 사항이 생기면 변경사항이 많아졌다.
→ 이를 최대한 줄이기 위해 함수 포인터 또는 같은 카테고리의 타입에서 특정 타입이 무엇인지 가려내기 위한 추가적인 데이터가 필요했다.
→ 데이터와 데이터를 다루는 함수를 같이 작성하는 것.
장점 : 데이터와 데이터를 다루는 함수를 같이 작성한다.
구조 :
class라는 구조체 안에 데이터 영역, 데이터를 다루는 함수 영역으로 이루어져 있다.
this 포인터
함수의 초기화
객체를 이용하여 함수를 호출 할 수 있고, 직관적인 초기화가 가능해졌다.
→ 기존의 객체를 만들고, 객체를 초기화 하기 위한 함수를 또 호출할 필요가 없다.
접근 지정자
용어 :