이 세상을 하나의 프로그램이라고 생각해봤습니다.. 우선 창조론적인 입장에서의 글이니 양해바랍니다;;

하나님이 이 '세상'이라는 프로그램을 만들기 위해 열심히 코딩하셨습니다. 7일만에 완성한 '세상'이라는 프로그램에

사람 클래스가 있는데 전역변수로 '아담' 과 '이브'라는 객체를 생성하셨습니다.

이 프로그램에서 특징은 모든 클래스의 각 객체들은 '생각이 가능'하고 '자신의 의지로 프로그램에 영향'을 미칠 수

있다는 점입니다.

원래 모든 클래스의 객체를 전역 변수로 만들어서, lifetime이 프로그램 종료될때까지였지만 '아담' 과 '이브'라는

객체가 프로그램에 문제를 일으켜 모든 클래스의 객체는 동적할당하는 개념으로 바뀌었습니다.

그래서 모든 객체는 동적할당으로 생성되면 생성자에서 lifetime을 초기화 해주는데 이 lifetime이 0이 되면

객체를 관리하는 스레드가 감지하고 해제를 시킵니다. 이 lifetime은 정상적으로 감소될경우 일정하게 감소가

되는데 외부 상황(교통사고, 질병 등)에 의해서 갑자기 0으로 바뀔 수도 있습니다. 즉, lifetime 멤버변수는

public으로 선언되어 있다는 것이지요. private이나 protect로 선언되어 있었다면 외부 상황에 영향을 받지 않고

주어진 수명동안 살 수 있었을 것입니다.(private이나 protect로 선언되어 있어도 접근하는 방법이 있긴합니다만,,
일단 제외;;)

사람 클래스에 대한 객체가 생성되는 시점을 살펴보겠습니다. 우선 사람클래스의 객체들 중에서 성별 멤버의 값이

'여성' 인 객체와 '남성'인 객체가 특별한 멤버 함수(파라미터로 정자가 전달된다;;)를 호출하게 되면 일정 시간이

흐른 후에 생성되게 되는데 이때 초기화 과정에서 여러가지 멤버 변수(나이, 무게, 키 등)들을 초기화 해주게 됩니다.

물론 호출할 때마다 생성되는 것은 아닙니다. 호출함수 안에서 조건식을 검사하는 부분이 있는데 그 조건이

참(난자와 정자의 수정)인 경우에만 생성이 됩니다.

이 프로그램은 무한루프가 돌고 있기 때문에 언제 종료될지는 모릅니다. 다만 운석충돌이나 프로그램전체에 영향을

주는 질병 or 천재지변이 발생할 경우 break;로 종료될 수도 있습니다..