[디딤돌 C++] 30. 무효화

학생) 기반 형식의 메서드와 같은 이름으로 정의하면 기반 형식의 메서드를 무효화합니다.

기반 클래스에서 정의한 멤버 메서드와 같은 이름으로 파생 형식에서 정의하면 어떻게 동작할까요?

파생 클래스에서 기반 클래스에 정의한 이름과 같은 이름으로 메서드를 만들면 기반 클래스에 정의한 메서드를 무효화합니다.

예를 들어 일반 프로그래머가 있고 EH 프로그래머가 있는데 대부분의 행위에 있어 EH 프로그래머는 일반 프로그래머와 같게 일을 한다고 가정합시다. 하지만 일반 프로그래머가 프로그래밍을 할 때 “생각하면서 코딩을 한다.”와 같이 하는데 EH 프로그래머가 프로그래밍을 할 때는 “생각한 것을 문서화 하고 이를 보면서 코딩을 한다.”고 해 볼게요. 이 때 일반 프로그래머의 프로그래밍이라는 메서드를 무효화합니다.

▷실행 결과

생각한 것을 문서화하고 이를 보면서 코딩을 한다.

 

특히 무효화는 메서드 이름을 기준으로 하여 기반 클래스에 같은 이름으로 중복 정의한 모든 메서드를 무효화합니다.

만약 일반 프로그래머에 프로그래밍이라는 메서드가 중복되어 있다고 가정해 봅시다. 하나는 매개 변수가 없는 메서드, 다른 하나는 매개 변수로 시간을 주는 메소드 형태일 때 EH 프로그래머에서 프로젝트 명을 입력 인자로 주는 메서드를 만들면 같은 이름을 갖는 일반 프로그래머에 프로그래밍이라는 모든 메서드를 무효화합니다.

▷ 실행 결과

프로젝트명: 도서 관리 프로그램

생각한 것을 문서화하고 이를 보면서 코딩을 한다.

 

다음은 무효화한 기반 클래스의 메서드를 호출하였을 때 발생하는 오류 화면입니다.

기반 형식의 메서드 이름과 같은 이름으로 파생 클래스에서 재정의하면 기반 형식의 메서드를 무효화시킴

이처럼 무효화한 기반 클래스의 메서드는 파생 클래스에서 기반 클래스 이름과 스코프 연산자(::)까지 포함하면 호출할 수 있습니다.

다음은 파생 클래스 EHProgrammer에서 무효화한 기반 클래스의 Programming 메서드를 호출하는 예제 코드입니다.

▷ 실행 결과

프로젝트명:도서 관리 프로그램

생각하고 문서화한다.

10시간 생각하면서 코딩을 한다.


[C++ 무료 동영상 강의] 30. 무효화