C++ Chapter 12.5 : 동적 바인딩 & 정적 바인딩
카테고리: Cpp
태그: Cpp Programming
인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 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
- 느리다.
- 런타임 중에 함수의 포인터를 보고 직접 함수를 찾아가 실행해야 해서.
- 그렇지만 유연하고 자유도가 높아 게임 프로그래밍에 필수적이다.
- 느리다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기