-
c++11에 추가된 override 키워드와 필요성프로그래밍/c++ 2015. 7. 13. 00:13반응형
Session을 상속받는 MySession이라는 클래스가 있다고 하자.
MySession 클래스는 Session의 OnReceive 함수를 재정의 하려고 했다.
1234567class MySession : public Session{public:virtual void OnReceive(){}};cs 하지만 Session의 OnReceive의 정의는 이와 달랐다.
1234567class Session{public:virtual void OnReceive(const void* buffer, size_t bytes){}};cs 이 경우 OnReceive는 Session의 OnReceive 재정의가 아닌, MySession 클래스에서 새롭게 정의된 가상함수로 인식을 한다.
C++11부턴 프로그래머의 이와 같은 실수를 예방하고자 override 키워드가 도입이 되었는데
1234567class MySession : public Session{public:virtual void OnReceive() override{}};cs 위와 같이 사용을 할 수 있다. override 키워드를 붙이면 override함수가 아닐 시에는 컴파일 단에서 오류를 잡아준다.
12345678910111213141516171819202122class Session{public:virtual void OnReceive(const void* buffer, size_t bytes){}};class MySession : public Session{public:virtual void OnReceive() override // error!{}virtual void OnReceive(const void* buffer, size_t bytes) override // ok!{}};cs 반응형'프로그래밍 > c++' 카테고리의 다른 글
boost::system::error_code를 std::error_code로 바꿔주기 (0) 2015.07.26 [c++11] std::weak_ptr의 사용 (0) 2015.07.23 C++ STL replaceAll. string 공백/개행 등 패턴 문자 제거 (2) 2015.06.10 구글 C++ 스타일 가이드의 멤버 변수 네이밍 규칙을 따르지 않아야겠다고 생각한 이유 (3) 2015.05.23 c++ 코드 조각 가변 인자 템플릿을 이용한 벡터의 초기화 (0) 2015.04.15