상세 컨텐츠

본문 제목

[C++11] Explicit virtual overrides

C++/Modern C++(11, 14, 17, 20)

by deulee 2023. 8. 25. 15:24

본문

C++11에선 명시적으로 가상 함수를 오버라이딩을 할 수 있다.

 

만약 가상 함수가 부모의 가상 함수를 오버라이딩 하지 않고 비가상 함수를 오버라이딩(재정의) 하는 경우 컴파일 단위에서 에러를 나타낼것이다.

#include <iostream>

class A {
public:
	virtual void foo() = 0;
	void bar();
};

class B : public A {
public:
	void foo() override; // correct -- B::foo overrides A::foo
	void bar() override; // error -- A::bar is not virtual
	void baz() override; // error -- B::baz does not override A::baz
};

이로 인해서 코드의 가독성을 높일 수 있다.

'C++ > Modern C++(11, 14, 17, 20)' 카테고리의 다른 글

[C++11] Delegating Constructors  (0) 2023.08.25
[C++11] User-defined literals  (0) 2023.08.25
[C++11] Final specifier  (0) 2023.08.24
[C++11] Default functions  (1) 2023.08.24
[C++11] Deleted functions  (0) 2023.08.24

관련글 더보기