C++11 속 꿀팁들 : override & final

Bogoomi·2022년 6월 7일
0

C++

목록 보기
3/8

override 지시어

아래의 코드를 보자.

class Shape
{
public:
	virtual void draw();
};

class Rect : public Shape 
{
public:
	void drow(); // 오타
}

개발자는 draw()를 오버라이딩하려다가 잘못 타이핑하여 drow()를 입력하였다.
하지만 컴파일러는 이를 오류로 지정하지 않아, 한참 뒤에서야 잘못 타이핑한 것을 알게 된다.
이런 상황을 피하기 위해 사용하는 것이 'override' 키워드이다.

override를 사용한 코드

class Shape
{
public:
	virtual void draw();
};

class Rect : public Shape 
{
public:
	void drow() override; //컴파일 오류 발생
};

위와 같이 작성하면 자칫 실수로 작성한 찾기 힘든 overriding 함수를 쉽게 찾을 수 있다.

final 지시어

final 지시어는 자식 클래스가 오버라이딩을 할 수 없게 하거나, 클래스의 상속 자체를 금지 시킬 수 있다. 자식 클래스도 final 사용 가능하다.

아래 코드는 '함수 오버라이딩 금지' 예시이다.

class Shape
{
public:
	virtual void draw() final;	// draw()의 오버라이딩 금지 선언!
};

class Rect : public Shape 
{
public:
	void drow(); // 컴파일 오류. 금지된 오버라이딩 시도.
};

아래 코드는 '클래스 상속 금지 선언' 예시이다.

class Shape final	// 클래스 상속 선언 금지!
{

};

class Rect : public Shape	// 컴파일 오류. 금지된 상속 시도!
{

};

java의 @override, final과 같은 기능.

profile
개에에에바알

0개의 댓글