C++의 동적 바인딩: 설명, 기능 및 구현

게시 됨: 2021-02-04

목차

소개

이 기사에서는 C++에서 동적 바인딩 작업을 안내합니다 . C++에서 상속 및 정적 바인딩 작업에 대한 기본 지식이 있어야 합니다. 정적 바인딩의 일부 제한 사항이 동적 바인딩에 의해 제거되기 때문입니다. 동적 바인딩이 얼마나 유용한지 적절하고 간단한 코드와 함께 보여줄 것입니다.

동적 바인딩이란 무엇입니까?

바인딩이란 일반적으로 한 개체를 다른 개체와 연결하는 것을 의미합니다. 프로그래밍 언어의 관점에서 바인딩은 크게 다르지 않습니다. 함수 정의와 함수 호출을 연결하는 것입니다. 그런데 왜 '다이나믹'합니까? 간단히 말해서, 동적 바인딩은 런타임까지 실행할 기능의 선택 또는 선택을 지연시키는 것입니다. C++에서 동적 바인딩을 사용 하여 객체의 기본 유형에 따라 실행할 수 있는 함수를 선택합니다.

정적 바인딩을 사용하는 프로그래머에게는 이러한 유연성이 제공되지 않았습니다. 정적 바인딩은 런타임이 아니라 컴파일 시간에 발생했습니다. 또한 정적 바인딩은 컴파일 시간 동안 함수 호출과 정의를 연결하는 반면 동적 바인딩은 런타임까지 그렇게 하지 않습니다.

동적 바인딩을 사용하면 런타임 순간에 필요한 함수 유형을 선택할 수 있는 유연성을 제공하여 유형 차이를 무시할 수 있습니다 . 이 명령문을 검토하면 동적 바인딩을 사용하면 단일 함수 이름을 사용하여 다른 개체를 처리할 수 있다는 것을 이해할 수 있습니다. 이렇게 하면 코드 복잡성이 줄어들고 프로그래머가 디버깅하는 동안 더 쉽게 시간을 보낼 수 있습니다.

가상 기능

우리는 C++ 의 동적 바인딩에 대해 많이 이야기했습니다. 하지만 어떻게 진행해야 할까요? C++ 코드에서 동적 바인딩을 구현하려면 '가상 함수'를 사용해야 합니다. 그렇다면 가상 기능은 무엇입니까?

이 기사에서는 가상 기능에 대해 광범위하게 다루지 않을 것입니다. 가상 기능은 별도의 기사에서 충분히 중요하기 때문입니다. 그러나 동적 바인딩을 명확하게 이해할 수 있도록 가상 기능에 대한 충분한 정보가 제공됩니다.

가상 함수는 포인터(또는 참조)를 통해 수행된 호출이 포인터가 있는 개체의 유형에 따라 런타임에 확인되는 특수 멤버 함수입니다. 간단히 말해서 기본 클래스에서 가상 함수를 정의하면 파생 클래스에서 함수를 재정의할 수 있습니다.

이것이 가상 기능의 힘입니다. C++에서는 함수 정의 시작 부분에 'virtual' 키워드를 사용하여 가상 함수를 정의합니다. 함수가 '가상'으로 선언되면 모든 파생 클래스에서 '가상'으로 유지되기 때문에 기본 클래스의 모든 파생 클래스에 대해 virtual 키워드를 반복하지 않아도 됩니다.

C++ 구현

그것은 가상 기능에 관한 것입니다. 이제 C++에서 동적 바인딩 을 이해하는 프로그램을 살펴보겠습니다 .

프로그램 #1 :

클래스 A는 '기본' 클래스이고 클래스 B는 '파생 클래스'입니다. 두 클래스 내에는 'display'라는 이름의 함수가 하나 있습니다. 부모 클래스에는 display() 함수를 호출하는 final_print()라는 또 다른 함수가 있습니다. main() 함수에서 동일한 display() 함수를 호출하여 두 개의 다른 클래스에 대해 두 개의 다른 객체를 만듭니다.

위 프로그램의 출력을 보자.

프로그램 #1의 출력:

예상대로 출력은 컴파일 시간(정적 바인딩)에 정의된 대로 기본 클래스의 display() 함수를 두 번 실행합니다. 그러나 이것은 우리가 원하는 출력이 아닙니다.

이제 위의 코드를 동적 바인딩으로 변환하려면 가상 함수를 사용해야 합니다. 그 방법을 알아보겠습니다.

프로그램 #2:

클래스 A와 클래스 B의 display() 함수 모두에 대해 'virtual' 키워드를 추가하여 가상 함수로 만듭니다. 그것이 필요한 유일한 변화입니다. 이전과 마찬가지로 두 개의 다른 객체를 사용하여 동일한 final_print() 함수를 호출합니다. 이제 어떤 결과가 나오는지 봅시다.

프로그램 #2에 대한 출력 :

이것은 우리가 원했던 출력이며 함수의 동적 바인딩을 사용하여 얻었습니다.

세계 최고의 대학에서 온라인으로 소프트웨어 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

결론

이 기사에서는 C++의 동적 바인딩 개념을 살펴보았습니다 . 요약하면 동적 바인딩은 단일 함수를 호출하여 다른 개체를 처리함으로써 유연성을 제공합니다. 코드에서 분명히 알 수 있듯이 두 개의 서로 다른 출력을 제공하기 위해 두 개의 서로 다른 객체를 만들어 동일한 함수 display()를 호출했습니다. 이것은 컴파일 타임에 발생하는 정적 바인딩과 달리 동적 바인딩이 런타임에 발생하기 때문에 가능합니다.

전체 스택 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 이그 제 큐 티브 PG 프로그램을 확인하십시오. 이 프로그램은 일하는 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육, 9개 이상의 프로젝트 및 과제를 제공합니다. , IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

C++ 프로그래밍 언어란 무엇입니까?

C++는 범용 프로그래밍 언어입니다. 세계에서 가장 널리 사용되는 프로그래밍 언어 중 하나입니다. C++는 C 언어의 향상된 버전이며 객체 지향 프로그래밍을 용이하게 하는 기능을 제공합니다. C++는 범용 프로그래밍 언어이고 C는 특수 목적 프로그래밍 언어입니다. C++는 객체 지향 프로그래밍을 지원하기 위해 C의 확장으로 만들어졌으며 데스크톱 응용 프로그램, 모바일 장치용 응용 프로그램, 임베디드 및 실시간 시스템, 웹 응용 프로그램 및 서비스를 개발하는 데 사용됩니다. C++는 명령형, 절차적, 다중 패러다임, 컴파일된 범용 프로그래밍 언어입니다. 구조적 프로그래밍, 객체 지향 프로그래밍 및 일반 프로그래밍을 지원합니다. 동적 유형 시스템과 명시적 메모리 관리가 있습니다.

객체지향 프로그래밍이란?

OOP는 재사용 가능하고 유지 관리하기 쉽고 읽기 쉬운 코드를 만드는 방법입니다. 간단히 말해서, OOP는 실제 개체를 중심으로 소프트웨어를 설계하는 것을 기반으로 하는 프로그래밍 패러다임입니다. 예를 들어, Java에서 책을 다루는 소프트웨어를 설계하려면 Book이라는 클래스를 만든 다음 단일 책을 나타내는 이 클래스의 개별 인스턴스(객체)를 만듭니다. 소프트웨어에서 생성해야 하는 다른 클래스에도 동일하게 적용됩니다.

C++에서 동적 바인딩이란 무엇입니까?

동적 바인딩은 프로그램 텍스트에 있는 식별자의 의미를 런타임에 발견된 해당 식별자에 대한 정의와 연결합니다. 이러한 의미의 연관을 바인딩이라고 합니다. 객체지향 프로그래밍의 기본 원리입니다. 동적으로 바인딩된 식별자는 객체 지향 클래스 계층 구조의 분기와 잎입니다. 컴파일 타임이 아니라 런타임에 확인되기 때문에 동적입니다. 객체 지향 클래스 계층의 가지와 잎은 파생된 클래스에 바인딩되어 있기 때문에 동적입니다.