binding은 값을 할당한다. 혹은 A와 B를 연결한다는 뜻을 가졌다.
프로그래밍에서는 정적 바인딩과 동적 바인딩 2개의 바인딩이 있다.
정적 바인딩(static binding)이란 컴파일 시간에 결정 되는 것으로 속도가 빠르다.
[C++, C#]
동적 바인딩(dynamic binding)은 컴파일 시간에 기계어 코드를 생성하고, 실행시간에 호출 되는 것이다.
실행 하고 조사하는 것으로 성능 저하가 있다.
[java, objective-C,C++의 virtual function]
1과 2는 예상한대로 Animal Cry와 Dog Cry 가 나온다.
3은 Animal Cry가 나온다.
n이 무엇을 입력받는가에 따라서
p = &d 일지 p = &a 일지 가 결정된다.
n은 실행시간 중에 결정된 것이다.
p는 객체는 알 수 없고 무슨 타입인지만 알고 있다.
컴파일 시간에 포인터의 타입만 알 수 있기 때문에 ( static binding )
Animal Cry가 호출된다.
'예전 > C, C++' 카테고리의 다른 글
char* char[] 을 검색해봤당 (0) | 2014.08.27 |
---|---|
visual studio warning 무시 하는 방법 (0) | 2014.05.20 |
[C++] upcasting (0) | 2014.01.28 |
[C++] 일반 함수 포인터, 멤버 함수 포인터 (0) | 2014.01.28 |
[C++] static 멤버 변수, 함수 (0) | 2014.01.28 |