전반적으로 try-catch를 사용한 에러 처리 구조 외에는 별달리 설명할 내용이 없는 과제

Exercise 00 : Mommy, when I grow up, I want to be a bureaucrat!

throw로 발생시킬 예외는 클래스 내에 std::exception 클래스를 상속받는 예외 클래스를 정의해둔 후, 가상으로 선언되어있는 what() 멤버 함수를 재정의하여 사용하면 됨
단, 이 때 예외는 반드시 try 내에서 throw를 통해 던져져야만 이어지는 catch에서 인식할 수 있음
관련 지식들을 미리 정리해두었던 내용


Exercise 01 : Form up, maggots!

const멤버 변수가 존재할 경우 대입 연산자를 원래처럼 사용할 수 없음

  • const_cast<>를 사용하여 const 변수의 값을 변경
  • 에러사항으로 취급
  • operator= 연산에 접근이 불가능하도록 private으로 이동
  • operator= 멤버 함수 뒤에 delete 키워드를 붙혀 사용 불가능하도록 설정(c++11 이후)

Exercise 02 : No, you need form 28B, not 28C…

각각의 클래스에서 필요한 클래스들이 맞물리면서 헤더의 충돌이 발생하는데, 이를 막기 위해 전방선언을 사용해야함
그 외에는 세개의 자식 클래스를 새롭게 선언하여 실행시켜주는 함수를 추가로 선언하여 각각의 기능들을 구현하면 됨
이 때 예외처리는 각 자식 클래스에서 throw로 예외를 보내주기만 하고, 각 클래스에 접근하는 executeForm() 함수 내에서 catch하도록 구성


rand()의 경우 시드값이 같으면 항상 일정한 값이 도출됨
따라서 srand(time(NULL))을 통해 시드값을 반드시 변경해주어야 원하는 랜덤값을 얻을 수 있음


Exercise 03 : At least this beats coffee-making

Intern 클래스에서는 if문을 남용하는 대신 멤버 함수 포인터를 사용