Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 캐스팅 연산자란 무엇입니까?


캐스트는 한 데이터 유형을 다른 데이터 유형으로 강제 변환하는 특수 연산자입니다. 연산자로서 캐스트는 단항이며 다른 단항 연산자와 동일한 우선 순위를 갖습니다.

대부분의 C++ 컴파일러에서 지원하는 가장 일반적인 캐스트는 다음과 같습니다. -

(type) expression

여기서 type은 원하는 데이터 유형입니다. C++에서 지원하는 다른 캐스팅 연산자가 있으며 아래에 나열되어 있습니다 -

  • const_cast (expr) - const_cast 연산자는 캐스트에서 const 및/또는 volatile을 명시적으로 재정의하는 데 사용됩니다. 대상 유형은 const 또는 volatile 속성의 변경을 제외하고 소스 유형과 동일해야 합니다. 이 유형의 캐스팅은 전달된 개체의 const 속성을 설정하거나 제거하도록 조작합니다.
  • dynamic_cast (expr) - dynamic_cast는 캐스트의 유효성을 확인하는 런타임 캐스트를 수행합니다. 캐스트를 수행할 수 없으면 캐스트가 실패하고 표현식이 null로 평가됩니다. dynamic_cast는 다형성 유형에 대해 캐스트를 수행하고 가리키고 있는 객체가 실제로 B 객체인 경우에만 A* 포인터를 B* 포인터로 캐스트할 수 있습니다.
  • reinterpret_cast (expr) - reinterpret_cast 연산자는 포인터를 다른 유형의 포인터로 변경합니다. 또한 포인터에서 정수 유형으로 또는 그 반대로 캐스팅할 수 있습니다.
  • static_cast (expr) - static_cast 연산자는 비다형성 캐스트를 수행합니다. 예를 들어 기본 클래스 포인터를 파생 클래스 포인터로 캐스팅하는 데 사용할 수 있습니다.

예시

이 캐스트는 대소문자에 따라 다릅니다. 컴파일러에 의해 구현된 캐스트가 있는 예를 생각해 봅시다 -

#include <iostream>
using namespace std;
main() {
   double a = 21.09399;
   float b = 10.20;
   int c ;
   c = (int) a;
   cout << "Line 1 - Value of (int)a is :" << c << endl ;
   c = (int) b;
   cout << "Line 2 - Value of (int)b is  :" << c << endl ;
   return 0;
}

출력

이것은 출력을 제공합니다 -

Line 1 - Value of (int)a is :21
Line 2 - Value of (int)b is  :10