본문 바로가기

Dev.World/개발상식&언어

[그들이 쓰는 언어] 8. 바인딩

바인딩

: 속성과 개체 사이 또는 연산과 기호 사이와 같은 연관이다. 이름을 속성에 연관시키는 과정.
바인딩이 일어나는 시간을 바인딩 시간이라고 부른다.

바인딩이란 함수 호출과 실제 함수를 연결하는 방법이다.

각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind)상태가 되는 것.

함수를 호출하는 부분에 함수가 위치한 메모리 번지를 연결시켜 주는 것.

프로그램 소스에 쓰인 각종 내부요소 혹은 속성(성격)을 확정 짓는 과정을 의미.


Ex) 변수의 데이터 형이 무엇인지 결정

이 과정이 컴파일 시에 이루어지면 정적 바인딩

Ex1)  C언어에서는 컴파일 시간에 변수의 데이터 형이 정해지므로 정적 바인딩

프로그램 실행 시 이루어지면 동적 바인딩

Ex2) 자바스크립트는 실행할 때 값에 따라 변수의 데이터 형이 정해지므로 동적 바인딩(인터프리터)


정적 바인딩과 동적 바인딩

기본적으로는 정적 바인딩 수행

동적 바인딩은 virtual 예약어를 사용해서 함수를 정의


- 정적 바인딩

실행 파일을 만들 때 호출될 함수로 점프할 번지가 결정되어 바인딩 되는 것.

컴파일 타임에 호출될 함수를 결정.

객체나 타입을 보고 호출할 함수를 결정

(일반함수)


- 동적 바인딩

실행 파일을 만들 때 바인딩 되지 않고 보류상태로 둠.

런타임에 호출될 함수를 결정한다

Virtual 예약어를 사용해서 가상함수를 정의해야한다.

호출 함수 결정은 객체의 가상함수 Table을 사용한다.