C++ Chapter 12.5 : 동적 바인딩 & 정적 바인딩

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


chapter 12. 가상 함수들 : 동적 바인딩 & 정적 바인딩

🔔 정적 바인딩 Static Binding

실행(런타임) 하지 않는 상태에서도 어떤 함수가 호출될지 명백히 알 수 잇는 경우.

int add(int x, int y)
{
    return x + y;
}

int subtract(int x, int y)
{
    return x - y;
}


int main()
{
    int x, y;
    cin >> x >> y;

    int op;

    cout << "0: add, 1: subtract" << endl;
    cin >> op;

    int result;
    switch(op)
    {
        case 0 : result = add(x, y); break;
        case 1 : result = subtract(x, y); break;
    }
}
  • 실행전, 빌드 타임에 이미 변수명, 함수 이름들이 다 깔끔하게 정의가 되어 있다.
    • 실행 중에 직접 함수를 찾아가야 하는 일 없이 op = 0 이면 바로 add 함수가 실행된다는 것을 실행전, 빌드 타임때 미리 알 수 있다.


🔔 동적 바인딩 Dynamic Binding

어떤 함수가 호출될지는 런타임 중에 결정된다.

int main()
{
    int x, y;
    cin >> x >> y;

    int op;

    cout << "0: add, 1: subtract" << endl;
    cin >> op;

    int(*func_ptr)(int, int) = nullptr;
    switch(op)
    {
        case 0 : func_ptr = add; break;
        case 1 : func_ptr = subtract; break;
    }
}
  • 런타임 때 func_ptr에 함수의 주소가 저장되며,
  • 런타임 때 직접 함수 포인터를 보고 해당 함수를 찾아가 호출해야 한다.


🔔 비교

  • static binding
    • 훨씬 빠르다.
      • 이미 실행할 함수가 빌드 때부터 결정이 되었기 때문에 런타임때 함수를 찾아갈 필요 없어 빠르다.
    • 실행 전에 미리 다 정의해 놔야 해서 유연성이 떨어진다.
  • dynamic binding
    • 느리다.
      • 런타임 중에 함수의 포인터를 보고 직접 함수를 찾아가 실행해야 해서.
    • 그렇지만 유연하고 자유도가 높아 게임 프로그래밍에 필수적이다.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기