Dynamic_Cast C++

Dynamic Cast C



이 기사에서는 C++ 프로그래밍 언어의 동적 캐스트에 대해 설명합니다. 시작하려면 캐스팅의 개념과 다양한 유형의 캐스팅을 이해해야 합니다. 변수의 데이터 유형을 변경하는 프로세스를 캐스팅이라고 합니다. 캐스팅은 C++ 프로그래밍 언어에서 암시적 캐스팅과 명시적 캐스팅의 두 가지 범주로 나뉩니다.

C++의 데이터 유형 변환:

유형 캐스팅은 데이터 유형을 다른 데이터 유형으로 변경하는 절차입니다. C++ 프로그래밍 언어에는 암시적 및 명시적 캐스팅이라는 두 가지 유형의 캐스팅 또는 유형 변환이 있습니다. 자동화된 유형 변환은 암시적 유형 변환의 또 다른 이름입니다. 실시간 컴파일 중에 컴파일러에 의해 수행되며 사용자 입력이나 작업이 필요하지 않습니다. 식에 두 가지 종류의 데이터 유형이 있는 경우 이러한 형태의 캐스팅이 발생합니다. 예를 들어:

  그래픽 사용자 인터페이스, 텍스트, 애플리케이션 설명 자동 생성







주어진 코드에서 정수 변수와 문자 변수가 마지막 라인 표현식에 삽입되고 정수 변수 'i'의 값이 변경되는 것을 볼 수 있습니다. 'a'에 해당하는 ASCII 숫자는 문자 값으로 변환되어 이 문에서 변수 'i'의 정수 값에 추가됩니다. 변수 'i'의 값이 인쇄되면 결과는 이 두 값의 합계가 됩니다. 컴파일러는 문자 변수의 데이터 유형을 오른쪽에 있는 알파벳의 ASCII 표준 값으로 변환하여 자동으로 정수 데이터 유형으로 변환합니다. 이는 런타임에 암시적 또는 자동화된 유형 변환의 좋은 예입니다.



이제 명시적 유형 캐스팅 또는 유형 변환과 관련하여 자동화된 프로세스가 아닙니다. 사용자는 코드에서 변수의 데이터 유형을 다른 유형의 변수로 수동으로 변환해야 합니다. 데이터 유형은 일반적으로 메모리 공간과 보유할 수 있는 정보의 양에 따라 계층 구조로 정렬됩니다. 따라서 어떤 정보를 저장하기 위해 저차 데이터 타입을 사용하지만 정보 손실을 최소화하고 더 많은 정보를 저장할 수 있도록 고차 데이터 타입으로 변환해야 하는 경우 명시적 타입 캐스팅 또는 타입 변환이 일반적입니다. 완료. 예를 들어, 정수형 변수는 소수점 이하의 값을 저장할 수 없기 때문에 정수형 변수를 계속 사용하면 일부 정보가 손실될 수 있습니다. 이러한 손실을 방지하기 위해 정수 변수를 float 변수로 변환하여 소수점 이하 값을 저장하여 정보 손실을 방지합니다. C++ 프로그래밍 언어의 명시적 형식 변환은 할당을 통하거나 캐스트 연산자를 사용하는 두 가지 방법 중 하나로 수행할 수 있습니다. 할당 변환은 코드 표현식에서 수행되며 이 표현식의 구문은 아래에 제공됩니다.



# '(데이터 유형) 표현식'

위의 코드에서 괄호 안에는 유효한 데이터 타입을 넣어야 하고, 괄호 뒤에는 수정하고자 하는 변수나 표현식을 괄호 안에 적힌 데이터 타입으로 작성해야 합니다.





이제 C++ 프로그래밍 언어에서 캐스트 연산자가 수행하는 변환 유형을 살펴보겠습니다. 캐스트 연산자는 변수가 데이터 유형을 기존 유형에서 다른 유형으로 변경하도록 강제하는 단항 연산자라고도 합니다. 캐스트 캐스트 연산자에는 Static 캐스트, Dynamic 캐스트, Const 캐스트 및 Re-interpret 캐스트의 네 가지 유형이 있습니다.

C++의 동적 캐스팅:

C++ 프로그래밍 언어의 동적 캐스팅은 RTTI(Run Time Type Identification)라는 개념을 기반으로 합니다. RTTI는 C/C++, Ada 및 Object Pascal과 같은 여러 프로그래밍 언어에 있는 함수입니다. Run-Time Type Identification or Information은 프로그램이 실행되는 동안 객체의 데이터 타입에 대한 정보를 식별하고 추출하는 기능입니다. 이 함수는 'typeid' 함수 또는 동적 유형 캐스팅과 같은 유형 캐스팅 방법에 대한 안전한 경로를 제공합니다. 런타임에 데이터 유형 정보를 감지하고 연산자가 작동 중일 때 데이터 유형 변환을 지원합니다.



동적 캐스팅은 런타임 안전 다운 캐스팅을 위해 C++에서 주로 활용됩니다. 동적 캐스트를 사용하려면 기본 클래스에 1개의 가상 함수가 있어야 합니다. 동적 캐스트는 이 정보를 사용하여 안전한 다운 캐스팅을 결정하기 때문에 다형성 기본 클래스에서만 작동합니다. 동적 캐스트 연산자는 동적 캐스트를 수행합니다. 이제 동적 캐스팅과 관련된 개념에 대해 알았으므로 구현 부분으로 이동할 수 있습니다. 먼저 아래에 작성된 C++ 프로그래밍 언어에서 동적 캐스팅을 사용하기 위한 구문을 살펴보겠습니다.

# “dynamic_cast (식)”

위 식에서 첫 번째 부분은 연산자의 이름을 설명합니다. 꺾쇠 괄호 안에는 표현식을 변환해야 하는 데이터 유형의 이름을 쓰고 둥근 괄호 안에는 변환하려는 변수 또는 객체 이름을 씁니다.

이제 동적 캐스트 연산자를 사용하고 변수의 데이터 유형을 변환하기 위한 매개변수를 채우는 방법을 알았으므로 이를 사용하여 변수의 데이터 유형을 변환할 수 있습니다.

Ubuntu 20.04에서 동적 캐스트 방법 사용:

이 개념을 구현하려면 상속을 통해 클래스의 개체를 변환하기 위해 작업할 여러 클래스를 사용해야 합니다. 따라서 먼저 Ubuntu 환경의 C++ 프로그램 파일이 확장자 '.cpp'로 저장되어 있다는 것을 먼저 알아야 하므로 데스크톱에서 이 파일을 생성하려면 터미널을 열고 데스크톱에서 'cd Desktop'을 입력합니다. 그런 다음 Enter 키를 누르고 'touch filename .cpp'를 입력하여 '.cpp' 확장자를 가진 파일을 만듭니다. 이제 해당 파일에 코드를 작성하여 기본 클래스와 2개의 파생 클래스를 만들고 드라이버 코드에서 동적 캐스트 연산자를 사용합니다.

  그래픽 사용자 인터페이스, 텍스트 설명 자동 생성

저장 버튼을 클릭한 후 파일을 종료합니다. 터미널로 돌아가 파일 이름과 확장자가 '.cpp'인 'g++' 명령을 사용하여 파일을 빌드합니다. 확장자가 '.out'인 파일이 이 명령을 사용하여 생성됩니다. 이제 './' 뒤에 '.out' 확장자를 입력하여 해당 파일을 실행할 수 있습니다.
  자동으로 생성된 텍스트 설명

이 프로그램에서 기본 클래스 포인터는 파생된 클래스 1 개체(d1)를 저장합니다. 동적 캐스팅 기본 클래스인 포인터는 Derived1 개체를 유지하고 유효한 동적 캐스팅을 제공하는 파생 클래스 1에 할당했습니다.

결론 :

이 기사에서는 C++ 프로그래밍 언어에서 사용되는 유형 캐스팅 방법에 대해 설명했습니다. 캐스팅의 종류에 대해서도 자세히 다루었고, C++ 프로그래밍에서 왜 그런 방법을 사용하는지에 대한 필요성에 초점을 맞췄다. 정보를 가져오고 RTTI라는 올바른 변환을 확인하여 변수의 데이터 유형 변환을 돕는 지원 기능에 대해 논의했습니다. 또한 Ubuntu 20.04 환경에서 C++ 프로그래밍 언어의 표현식에 동적 캐스트 연산자를 사용하여 동적 캐스팅 개념을 구현했습니다.