override 와 final 키워드
C++/C++ 2021. 3. 26. 05:33 |virtual 과 override
클래스의 멤버함수를 재정의할 수 있도록 만들 때 사용되는 키워드 virtual
부모 클래스의 멤버함수를 재정의할 때 사용되는 키워드 override
struct A {
virtual void Foo() {
}
};
struct B :A {
virtual void Foo() override{
}
};
B클래스에서 부모클래스 A의 Foo 함수를 재정의 할 경우 override 키워드를 붙여주므로써
개발자에게 함수를 재정의를 했다는 것을 명시해줄 수 있다. ( C++ 11부터 등장, 안붙여도 오류는 없다 )
만약 override를 붙이지 않는다면 해당 함수가 재정의된 것인지 원형인지구분이 어려울 것이다.
final
재정의한 함수를 더이상 재정의할 수 없도록 하는 키워드 final
struct A {
virtual void Foo() {
std::cout << "This is A's Foo function" << std::endl;
}
};
struct B :A {
virtual void Foo() final{
std::cout << "This is B's Foo function" << std::endl;
}
};
struct C : B
{
virtual void Foo() override {
std::cout << "This is C's Foo function" << std::endl;
}
};
B클래스에서 final 키워드를 붙여 Foo함수를 재정의하였다.
더이상 재정의 하지 않을 최종판이라는 의미이다.
위의 코드는 컴파일에러 E1850 을 뱉는다.
C 클래스에서 최종판이 확정된 B클래스의 Foo 함수를 재정의하려 했기 때문이다.
'C++ > C++' 카테고리의 다른 글
GCC로 컴파일하기 (0) | 2021.04.14 |
---|---|
반복자 다루기 (0) | 2021.03.26 |
성능 개선을 위한 가이드 (0) | 2021.03.24 |
inline 키워드 (0) | 2021.03.22 |
noexcept as specifier & operator (0) | 2021.03.19 |