여기서 잠깐,
오버로딩은 함수 이름의 재정의 ex. 인자의 타입 및 개수에 따라 같은 이름의 함수를 재정의
오버라이딩은 상속관계의 클래스 내에서 함수 재정의 ex. Player 클래스의 Attack 함수, Knight 클래스의 Attack 함수
아래와 같이 가상함수를 오버라이드 하는 경우
override를 붙여줌으로써
오버라이드된 함수라는 사실을 가독성 측면에서 증가시킨다
맨 처음 가상함수를 정의하는 부모 클래스에는 override를 붙일 수 없으며
이를 받는 자식들의 가상함수에 override를 붙인다
class Creature
{
public:
virtual void Attack() { }
}
class Player : public Creature
{
public:
virtual void Attack() override { }
}
추가적으로,
아래와 같이 final을 붙여주면 본인을 상속받는 다른 자식들은
해당 함수를 override 할 수 없게 된다
class Creature
{
public:
virtual void Attack() { }
}
class Player : public Creature
{
public:
virtual void Attack() final { }
}
class Knight : public Player
{
public:
//vitual void Attack() override// 불가능
}
'C++ > [루키스] Modern C++' 카테고리의 다른 글
[MC++] 전달 참조 (Forwarding reference) (0) | 2023.07.02 |
---|---|
[MC++] 오른 값 참조 (Rvalue reference)와 std::move (0) | 2023.07.02 |
[MC++] delete (0) | 2023.07.01 |
[MC++] enum class (0) | 2023.06.30 |
[MC++] using (0) | 2023.06.29 |