상세 컨텐츠

본문 제목

동적 / 정적바인딩

C++/템플릿

by nowpassion 2008. 5. 5. 14:16

본문

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의 일부로 결정됩니다. 이를 정적바인딩이라고 합니다.

'C++ > 템플릿' 카테고리의 다른 글

템플릿을 확장하기 위해 연산자 오버로드딩을하는 경우  (0) 2008.05.05
함수 템플릿 오버로딩  (0) 2008.05.05
템플릿(Template)  (0) 2008.05.05
Virtual함수를 직접 불러오는 방법  (0) 2008.05.05
Overriding?  (0) 2008.05.05

관련글 더보기