식당(프로그램)에서 손님을 받는다고 가정을 해보자.
손님이 들어오면 테이블에 앉아서 서비스를 받겠지?
일단 기본 상차림(물, 컵, 수저 젓가락)을 세팅할 거고
손님이 주문하는 메뉴에 따라 숯불을 놓기도 하고 불판 종류를 바꾸기도 하겠지.
여기서 테이블(식탁)은 우리가 클래스를 생성해서 할당할 변수라고 생각해보자.
물, 컵, 식기 들을 내주는게 기본 생성자의 동작이라고 보면 돼.
손님의 주문(생성자의 인자)에 따라 숯불을 놓고 불판을 다른 종류로 바꿔주는 부분도 생성자가 하는 일이기도 하지.
이 다음에 식탁(클래스 변수) 위에 고기를 가져다 주기도 하고 밥을 가져다 주기도 하고 후식도 내주기도 할 수 있겠지만 이 부분은 나중 일이고
생성자가 하는 부분은 식탁을 세팅해주는 부분 까지라고 생각하면 될거야.
소멸자가 하는 일은 다 먹고 나간 다음에 식탁을 치우는 일이라고 생각하면 되겠지.
음식물 쓰레기는 모아서 버리고, 그릇을 치우고, 식탁위를 닦는 동작 들이 소멸자가 하는 행동이라고 보면 돼.
보충설명 하자면 C#, JAVA등에서 GC(가비지컬렉터)가 하는 행동은 손님이 자리에 없으면 큰 쓰레기 봉다리에 죄다 때려박는거라고 보면 돼.
머그잔 안쓰는 커피숍같이 테이블 위에 아무것도 없어도 되는 식당이라면 그냥 위에 있는거 죄다 버려도 문제가 안되겠지만,
숯불에 불판에 유리잔들도 쓰는 식당이라면 이렇게 죄다 때려박아 버려버리면 문제가 생기겠지?
그래서 소멸자를 설정해주는거라고 생각하면 될거야.
중언부언