동적 바인딩
기본 클래스의 포인터나 레퍼런스로 가상 함수를 호출하면 기본 클래스의 포인터나 레퍼런스가 어떤 클래스의 객체를 가리키는가에 따라 호출될 함수가 결정됩니다,
- 실행 시간에 호출될 함수를 결정하는 것을 동적 바인딩(Dynamic Binding)이라고 합니다.
- 반면, 컴파일 시간에 호출될 함수를 미리 결정하는 것을 정적 바인딩(Static Binding)이라고 합니다.
특징 | 정적 바인딩 | 동적 바인딩 |
바인딩 시기 | 컴파일 시간 | 실행 시간 |
구분 | 일반 함수 | 가상 함수 |
장점 | 동적 바인딩에 비해 처리속도가 빠르다 | 프로그램의 융통성이 크다 |
단점 | 프로그램의 융통성이 작다 | 정적 바인딩에 비해 처리속도가 늦다 |
가상함수를 제외한 모든 함수는 정적 바인딩으로 처리됩니다.
- 정적 바인딩은 컴파일 시간에 호출될 함수를 미리 정해두는 방법입니다.
가상함수는 동적 바인딩으로 처리됩니다.
- 동적 바인딩은 기본 클래스 포인터나 레퍼런스로 호출하더라도 실행 시간에 실제로 사용된 객체의 클래스형에 의해 호출될 함수가 결정됩니다.
- 동적 바인딩을 사용하는 경우에는 처리속도가 느려지기 때문에 모든 멤버 함수를 가상 함수로 만들 필요는 없습니다.
- 파생 클래스에서 재정의될 것이 예측되고 다형성을 이용해 처리하고자 하는 함수를 가상함수로 정의합니다.
'Programming Language > C, C++' 카테고리의 다른 글
C++ 가상 함수 (virtual) - 가상 함수의 원리 (1) | 2014.11.07 |
---|---|
C++ 가상 함수 (virtual) - 가상 소멸자 (0) | 2014.11.07 |
C++ 가상 함수 (virtual) - 기본 (0) | 2014.11.07 |
C++ 상속 (0) | 2014.11.07 |
C++ Hash와 Map의 차이점 (0) | 2014.10.13 |