fullstack

[C++] static binding & dynamic binding

Language/C++

binding이란 프로그램 소스에 쓰인 내부 요소, 이름, 식별자들에 대해 값이나 속성을 확정하는 과정을 일컫는 말이다.

이 과정이 컴파일 타임에 이루어지면 static binding이라 하고, 런 타임에 이루어지면 dynamic binding이라 한다.




1
int static_binding = 1;



static binding은 위와 같이 일반적으로 이루어진다.

데이터 타입이 int로 정해지는 것과 그 타입의 변수명이 static_binding으로 정해지는 것이 바로 static binding이다.




1
2
AAA* a = new /* ??? */ ;
a->func();



dynamic binding은 이전 글인 [C++] virtual 키워드 에서 이미 사용하였다.

Base 클래스의 멤버 함수를 가상함수로 선언하여 여러 Derived 클래스에서 오버라이딩 한다면 위의 ??? 부분에 어떤 Derived 클래스를 넣는 가에 따라서 다른 함수가 호출된다.

이처럼 dynamic binding은 포인터가 가리키는 객체가 무엇인가에 따라서 호출되는 함수가 유동적으로 변하게 된다.




dynamic binding은 다형성의 한 예이며, 이처럼 모습은 같은데 형태는 다른것을 다형성(polymorphism)이라 한다.


'Language > C++' 카테고리의 다른 글

[C++] virtual 소멸자  (0) 2015.12.26
[C++] 순수 가상 함수와 추상 클래스  (0) 2015.12.26
[C++] virtual 키워드  (0) 2015.12.24
[C++] 오버라이딩 (Overriding)  (0) 2015.12.24
[C++] 객체 포인터  (0) 2015.12.22