작성
·
227
0
부모 클래스에서 virtual 선언된 함수가 자식 클래스에서 오버라이딩될 때 자식클래스에서도 꼭 virtual을 써줘야 하나요?
아니면 쓰나 안쓰나 똑같이 virtual로 처리돼서 별 상관 없나요?
답변 3
1
소멸자를 따로 정의하지 않으면,
기본적으로 ~Classname() { }이 만들어진다고 보시면 됩니다.
(virtual이라면 virtual ~Classname() {} 이겠죠)
1
안 써도 똑같이 virtual 처리가 되긴 하지만,
매 번 부모 클래스를 일일히 확인할 순 없으니
가독성 차원에서라도 virtual을 붙이는 것을 권장드립니다.
0
추가로 헷갈리는거 질문할 게 있습니다.
creature랑 player클래스 소멸자에 virtual을 붙이고 { }안에는 아무것도 선언 안한 채로 두고, Knight같은 직업 클래스는 소멸자를 정의 안하고 있는데,
어차피 _player가 자식클래스 객체의 포인터라서 delete할 시 완전하게 할당 해제가 될 텐데 부모 클래스에 소멸자를 정의할 필요가 있나요?
질문이 좀 난잡한데 요지는 Knight등의 직업 클래스는 왜 소멸자를 정의 안했는지 이유가 궁금합니다.