1. Dynamic Binding(동적바인딩)
- 실행시간에 적합한 함수를 선택하는 것입니다.
- 30-2예제를 보면
ex) Cylinder * cyl = new Cylinder(3, 5, 8);
Circle * cir = cyl;
cyl->draw();
cir->draw();
- 위와 같이 draw()함수는 virtual선언이 되어있는 상태에서 포인팅되어 있는 객체의 타입에 따라 실행결과가 달라지는데 (cyl -> draw()는 당연히 원기둥을 그릴것이고, cir->draw()는 virtual선언이 되어있으므로 실제 cyl의 draw()를 실행할 것입니다.) 이것은 런타임에 결정되는 사항입니다. 바로 이것을 동적 바인딩이라고 합니다.
2. Static Binding
- 컴파일 시간에 적합한 함수 호출이 일어나는 것입니다.
ex) Cylinder cyl2(3, 3, 3);
cyl2.draw();
- 위와같은 경우 멤버 선택 연산자(.)를 통해 함수를 호출할 경우, 컴파일 시간에 draw()함수는
cyl2의 일부로 결정됩니다. 이를 정적바인딩이라고 합니다.