예전/C, C++

[C++] binding

showmiso 2014. 1. 28. 12:36

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가 호출된다.