인프런 커뮤니티 질문&답변

ms님의 프로필 이미지
ms

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

TextRPG (OOP) #3

virtual 질문

작성

·

228

0

부모 클래스에서 virtual 선언된 함수가 자식 클래스에서 오버라이딩될 때 자식클래스에서도 꼭 virtual을 써줘야 하나요?

아니면 쓰나 안쓰나 똑같이 virtual로 처리돼서 별 상관 없나요?

답변 3

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

소멸자를 따로 정의하지 않으면,
기본적으로 ~Classname() { }이 만들어진다고 보시면 됩니다.
(virtual이라면 virtual ~Classname() {} 이겠죠)

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

안 써도 똑같이 virtual 처리가 되긴 하지만,
매 번 부모 클래스를 일일히 확인할 순 없으니
가독성 차원에서라도 virtual을 붙이는 것을 권장드립니다.

0

ms님의 프로필 이미지
ms
질문자

추가로 헷갈리는거 질문할 게 있습니다.

creature랑 player클래스 소멸자에 virtual을 붙이고 { }안에는 아무것도 선언 안한 채로 두고,  Knight같은 직업 클래스는 소멸자를 정의 안하고 있는데, 

어차피 _player가 자식클래스 객체의 포인터라서 delete할 시 완전하게 할당 해제가 될 텐데 부모 클래스에 소멸자를 정의할 필요가 있나요?

질문이 좀 난잡한데 요지는 Knight등의 직업 클래스는 왜 소멸자를 정의 안했는지 이유가 궁금합니다.

ms님의 프로필 이미지
ms

작성한 질문수

질문하기