본문 바로가기

예전/C, C++

[C++] binding

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