virtual 함수, [static binding/dynamic binding]
virtual 함수는,
최종적으로 오버라이딩 한 함수를 제외하고 나머지 함수는 가려지게 된다.
static binding : 컴파일하는 동안(컴파일-타임)에 호출될 함수가 결정. (호출될 함수가 이미 고정되어 있는것.)
dynamic binding : 컴파일 하는 동안(컴파일-타임)에 호출될 함수가 결정되는 것이 아니라, 실행하는 동안(런-타임)에 호출될 함수가 결정된다. 포인터가 가리키는 객체가 무엇이냐에 따라서 그 문장이 호출되는 함수는 유동적이다.
다형성의 한 예("모양은 같은데 형태는 다르다.")
#include <iostream> class AAA class CCC : public BBB }; int main(void) delete a; |
####virtual 함수를 사용하지 않은 예제결과와 비교해 볼것~!
#include <iostream> class AAA class CCC : public BBB }; int main(void) delete a; |
[오버라이딩 된 함수 호출하기]
방법 : 범위 지정 연산자를 이용.
a->AAA::fuct(); 의 방식으로 사용.