rules

ex00

void announce(void) , Zombie* newZomibe(std::string name), void randomChump(std::string name)

이 함수들을 구현하고, 사용 방식에 따라 스택영역, 힙영역에 할당하고 적절한 때 소멸해야 합니다.

newZombie함수는 new 연산자를 사용해서 동적할당하여 Zombie를 생성하라는 것으로 생각했고,

randomChump는 동적할당하지 않고 Zombie를 생성하는 함수로 생각했습니다.

이번에는 Zombie 객체를 클래스의 외부에서 생성하는 경우 항상 new 연산자를 사용해서 동적으로 생성해야만 생성할 수 있도록 해두었고, 동적으로 할당하지 않는 경우는 클래스 내부에서 생성하고 사라질 수 있도록 설계해두었습니다.

이렇게 하기 위해서 생성자를 private 접근 지정자의 위치에 두므로써 구현할 수 있을 겁니다. default 생성자는 생성자가 하나라도 선언되어 있다면 없는 취급되므로 클래스 내부에서만 생성자를 호출할 수 있게 됩니다.

이렇게 하면 Zombie 객체를 동적할당하지 않을 경우 특정 함수가 종료되면서 자동 소멸되는것을 알 수 있고,

동적할당한 경우는 직접 delete로 할당을 해주어야하는 것을 쉽게 보여줄 수 있다고 생각했습니다.

그리고 추가적으로 randomChump에서 생성되는 Zombie는 random한 6글자 이름을 가질 수 있도록 해보았습니다.

ex01

이번엔 많은 좀비를 한번에 할당하고 첫번째 생성한 Zombie의 주소값을 반환하기 위해서는 배열을 사용해야하며,

객체를 N개 저장할 수 있는 배열을 생성하는 방법을 알아야하겠다.

<aside> 💡 객체 배열 생성시 생성자에 인자를 넘길 수 없고, 디폴트 생성자만 호출된다.

</aside>

방법1

Zombie arr[N];

방법2 (동적할당)

Zombie *arr = new Zombie[N];