[C++] final과 override
카테고리: Cpp
태그: Inheritance Keyword
이 글은 C++ final과 override를 공부하고 정리한 글입니다.
final은 클래스나 가상 함수를 파생 클래스에서 오버라이딩 못 하도록 한다.
override는 잘못된 가상 함수 오버라이딩을 막아준다.
final 키워드
- 클래스나 가상 함수를 파생 클래스에서 오버라이딩 못 하도록 하려면 final 키워드를 사용
- 당연히 가상 함수가 아니면 쓸 수 없음
-
컴파일 도중에 확인
코드 예제
// 예시 1 : 클래스의 상속을 막는다 // Dog.h class Dog final : public Animal // Dog 클래스를 더 이상 상속 못받게 함 { }; // Corgi.h #include "Dog.h" class Corgi : public Dog // 에러 { }; // 예시 2 : 함수의 재정의를 막는다 // Dog.h class Dog : public Animal { public : virtual void SetWeight(float weight) final; // SetWeight 함수를 더 이상 재정의 못하게 함 }; // Corgi.h class Corgi final : public Dog { public : virtual void SetWeight(float weight) override; // 에러 };
override 키워드
- 잘못된 가상 함수 오버라이딩을 막으려면 override 키워드를 사용
- 당연히 가상 함수가 아니면 쓸 수 없음
-
컴파일 도중에 확인
코드 예제
// Animal.h class Animal { public : virtual void SetWeight(float weight); virtual ~Animal() = default; }; // Dog.h class Dog : public Animal { public : virtual ~Dog() override = default; // 부모의 소멸자가 가상 소멸자로 보장됨(아니면 에러) virtual void SetWeight(float weight) override; };
참조
💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸
댓글 남기기