목록
2019년 6월 14일 금요일
[C++] 오버라이드(override) 키워드
C++11 부터 추가된 override 키워드는
오버라이딩을 한 함수에 붙여서 해당 함수가 오버라이딩 한 함수임을 다른 개발자에게 알리는 용도 및 오버라이딩 함수의 검증 용도로 사용됩니다.
자바를 해본 사람이라면 @Override 키워드를 생각하시면 됩니다.
사용 방법
오버라이딩 한 함수의 선언부 매개변수 리스트 뒤에.
세미콜론(;) 또는 중괄호의 시작({) 이 나타나기전에 override 라고 입력을 합니다.
부모클래스의 가상 함수와 이름 및 리턴 타입, 매개변수 리스트가 모두 똑같은 경우 별도로 virtual 을 붙이지 않아도 함수가 오버라이딩 되는데,
해당 클래스만 봐서는 함수가 오버라이딩 한 함수인지 파악이 되지 않습니다.
virtual 을 붙였다 하더라도 해당 클래스에서 새로 만들어진 함수인지, 부모클래스에 있는 함수를 오버라이딩 한 것인지 알 수 없기도 하고요.
override 키워드를 붙이면 조상클래스까지 뒤져보지 않아도 오버라이딩 되었다는것을 한 번에 알 수 있게 됩니다.
또한 앞서 검증 용도로도 사용된다고도 설명드렸는데,
함수 이름, 리턴 타입, 매개변수 리스트 중 하나라도 다르다면 오버라이딩이 실패합니다.
하지만 override 키워드를 붙이지 않았다면 컴파일러가 그냥 전혀 다른 함수로 인식하고 의도와는 다르게 문제없이 컴파일이 되버립니다.
해당 스크린샷은 고의로 오버라이딩 할 함수의 이름에 오타를 내어보았습니다. (대소문자)
override 키워드가 붙여져 있다면 다음과 같이 에러를 뿜어서 오버라이딩에 문제가 있을을 알 수있는데, override 키워드를 붙이지 않는 경우 문제없이 컴파일 되버립니다.
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기