캐스트는 한 데이터 유형을 다른 데이터 유형으로 강제 변환하는 특수 연산자입니다. 연산자로서 캐스트는 단항이며 다른 단항 연산자와 동일한 우선 순위를 갖습니다.
대부분의 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 연산자는 비다형성 캐스트를 수행합니다. 예를 들어 기본 클래스 포인터를 파생 클래스 포인터로 캐스팅하는 데 사용할 수 있습니다.
위에서 언급한 모든 캐스팅 연산자는 클래스 및 개체로 작업하는 동안 사용됩니다. 지금은 C++에서 사용할 수 있는 간단한 캐스팅 연산자를 이해하기 위해 다음 예제를 시도합니다. test.cpp 파일에 다음 C++ 프로그램을 복사하여 붙여넣고 이 프로그램을 컴파일하여 실행합니다.
예시 코드
#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