강의

멘토링

로드맵

Inflearn Community Q&A

mindol's profile image
mindol

asked

[MMORPG Game Development with C++ and Unreal Series] Part 1: Introduction to C++ Programming

TextRPG (OOP) #3

virtual 질문

Written on

·

330

0

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

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

C++

Quiz

61% of people got it wrong. Give it a try!

C++ 프로젝트에서 코드의 인터페이스(선언)와 구현을 각각 .h 파일과 .cpp 파일로 분리하는 주된 이유는 무엇일까요?

메모리 사용량을 자동으로 최적화하기 위해서

컴파일러의 종류에 상관없이 코드를 실행하기 위해서

선언과 구현을 분리하여 코드 구조를 명확히 하고 컴파일 의존성을 관리하기 위해서

파일 시스템에서 자동으로 백업을 생성하기 위해서

Answer 3

1

Rookiss님의 프로필 이미지
Rookiss
Instructor

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

1

Rookiss님의 프로필 이미지
Rookiss
Instructor

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

0

ms님의 프로필 이미지
ms
Questioner

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

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

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

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

mindol's profile image
mindol

asked

Ask a question