• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

정적 바인딩과 동적 바인딩 차이가 이해가 안됩니다.

19.11.29 21:41 작성 조회수 475

5

교수님 저도 이 강의에서 13일전에 나왔던 질문자와 같은 질문이 있습니다.

"두 코드를 비교하시면서 동적, 정적 바인딩의 차이를 설명해주셨는데, 결국 result나 func_ptr 모두 런타임에서 op값이 무엇이냐에 따라서 결정되는 것 아닌가요?"

이런질문이 있었는데 강의가 어느부분인지 표기해서 올리라고 하신 답글을 달아주셨네요.

여기에 덧붙여서 좀더 디테일하게 질문을 하자면, 결국 op를 cin으로 런타임에 받아서 그 op에 따른 케이스에따라 result 나 func_ptr이나 모두 결정되는 것이 아닌가합니다.

그래서 cout << result << endl;이나 cout << func_ptr(x,y) << endl; 이나 동일하게 런타임에 입력하는 op값에 따라 결정되는 것이 아닌가 생각합니다.

그래서 차이를 잘 모르겠습니다.

강의는 12.5 동적바인딩과 정적바인딩이고 1분15초쯤입니다.

교수님께서 질문을 하면 고민 더 해보라고 하시는 답글을 매번 해주시는 것 같아서 질문 전에 자료도 찾아보고 고민해봤는데 이 예제에서의 정적바인딩 동적바인딩 차이를 가늠하기가 좀 어렵네요

찾아보면 대부분이 예제를 int a = 0 이런걸 정적바인딩으로 설명해서 이미 컴파일타임에 a가 결정되는 이런걸 정적바인딩이라고 설명을 해놓아서 더욱 헷갈리는 것 같습니다.

교수님의 보다 자세한 의견을 듣고싶습니다.

답변 3

·

답변을 작성해보세요.

2

sualyer010님의 프로필

sualyer010

질문자

2019.12.01

감사합니다 많은 도움이 되었습니다. 링크도 참고하겠습니다.

2

정적바인딩과 동적 바인딩은 early binding 또는 late binding이라고도 합니다. 프로그램 작동 결과에 따라 분류하는 것이 아니라 프로그래밍 방식에 따른 차이입니다. 지적하신 대로 동적바인딩과 같은 결과를 정적바인딩으로 구현할 수도 있습니다. 다만 바인딩의 조합이 아주 많을 경우에는 동적바인딩이 구현하기에 훨씬 편한 경우가 많습니다. 예를 들면 최근 게임들은 게임속에서 입력 키의 조합을 사용자가 얼마든지 자유롭게 바꿀 수 있습니다. 이것을 정적 바인딩으로 구현하려면 if문이 아주 많이 필요하겠지요. 아래 링크도 참고하세요.

https://www.geeksforgeeks.org/early-binding-late-binding-c/

0

박제영님의 프로필

박제영

2023.01.17

저도 질문자 님과 같은 궁금함이 생기는데 댓글을 봐도 모르겟군요

정적바인딩이라는 말이 result변수를 대상으로 한것이 아니라 함수호출의 주소를 말하는 것인가요?

result = add(x,y);

함수 호출하는 주소가 컴파일 타임에 결정된다는 것일까요?

동적은 알겠습니다 포인터에 함수주소 넣어주소

런타임에 함수호출할수잇는 주소가 결정된다는 것을요

이렇게 이해하는게 맞나요?

 

맞습니다.

아마 같은 의미인 것 같은데 보다 정확히 적는다면 서로 다른 여러 개의 함수들(다른 주소에 있는 함수들) 중에서 어떤 것을 호출할지를 그때그때 같은 변수(func_ptr)에 연결(바인딩)시켜주는 것입니다. 이때 바인딩이라는 용어는 꼭 변수와 연결시켜준다로 한정지을 필요 없이 일반적인 의미의 연결시켜준다로도 볼 수 있는데 예를 들면 std::map<"함수문자열", 함수포인터>를 활용할 수도 있습니다. std::map, std::function 등은 뒤에 나옵니다.

박제영님의 프로필

박제영

2023.01.31

호댕동 존경하는 교수님께서 직접 답변을 달아주시다니
교수님 강의 최고입니다.