🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

동적 바인딩 정적바인딩..

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

답변을 작성해보세요.

1

좋은 질문입니다. 다른 학생의 동일한 질문에 답변을 드린 기억이 나네요. 게임 중간에 키를 바꾸듯이 (예를 들어서 w키로 직진을 하다가 t키로 직진을 하도록 변경) 이 예제에서도 0, 1, 2에 따라 어떤 기능을 수행할지 바꾸고 싶을 경우에 대해서 생각을 해보세요. 

채널톡 아이콘