오버라이드(Override)란?
부모 클래스의 가상 함수(
virtual)를 자식 클래스에서 자신의 기능에 맞게 다시 구현하는 것
왜 사용할까?
같은 함수 이름을 사용하면서 객체마다 다른 동작을 수행하기 위해 사용한다.
class Monster
{
public:
virtual void Attack();
};
class Goblin : public Monster
{
public:
void Attack() override;
};
class Dragon : public Monster
{
public:
void Attack() override;
};- 고블린 → 근접 공격
- 드래곤 → 브레스 공격
처럼 같은 Attack() 함수라도 다른 동작을 수행할 수 있다.
override 키워드
void Attack() override;부모의 가상 함수를 올바르게 재정의했는지 컴파일러가 검사하도록 하는 키워드
한 줄 정리
오버라이드(Override)
부모의 가상 함수를 자식 클래스에서 다시 구현하는 것
override 키워드
해당 함수가 부모의 가상 함수를 재정의한 것이 맞는지 검사하는 키워드
오버라이드는 상속 관계에서 부모의 가상 함수를 자식 클래스의 목적에 맞게 재구현하는 기능이며, 다형성을 구현하는 핵심 개념이다.