-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
동적 바인딩 정적바인딩..
20.04.23 01:26 작성 조회수 132
0
#include <iostream>
using namespace std;
int add(int x, int y) { return x + y; }
int subtract(int x, int y) { return x = y; }
int multiply(int x, int y) { return x * y; }
int main() {
int x, y;
cin >> x >> y;
int op;
cout << "add : 1, sub : 2, multi : 3" << endl;
cin >> op;
int result;
switch (op) {
case 0: result = add(x, y); break;
case 1: result = subtract(x, y); break;
case 2: result = multiply(x, y); break;
}
cout << result << endl;
return 0;
}
#include <iostream>
using namespace std;
int add(int x, int y) { return x + y; }
int subtract(int x, int y) { return x = y; }
int multiply(int x, int y) { return x * y; }
int main() {
int x, y;
cin >> x >> y;
int op;
cout << "add : 1, sub : 2, multi : 3" << endl;
cin >> op;
int(*func_ptr)(int, int) = nullptr;
switch (op) {
case 0: func_ptr = add; break;
case 1: func_ptr = subtract; break;
case 2: func_ptr = multiply; break;
}
cout << func_ptr(x, y) << endl;
return 0;
}
궁금한게 정적 바인딩 코드를 봐도 result의 값은 런타임에 op에 무엇을 넣느냐에 따라 달라지는데, 왜 이것 또한 정적인게 아닌지 궁금합니다.
즉, 이 둘의 명확한 차이점에 감이 안간다는 말 입니다.
답변을 작성해보세요.
1
![홍정모님의 프로필](https://cdn.inflearn.com/wp-content/uploads/avatars/119040/5bbb2401625f6-bpfull.jpg?w=48)
홍정모
지식공유자2020.04.23
좋은 질문입니다. 다른 학생의 동일한 질문에 답변을 드린 기억이 나네요. 게임 중간에 키를 바꾸듯이 (예를 들어서 w키로 직진을 하다가 t키로 직진을 하도록 변경) 이 예제에서도 0, 1, 2에 따라 어떤 기능을 수행할지 바꾸고 싶을 경우에 대해서 생각을 해보세요.
답변 1