English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ 강제 변환 연산자

C++ 연산자

강제 변환 연산자는 특별한 연산자로, 하나의 데이터 타입을 다른 데이터 타입으로 변환합니다. 강제 변환 연산자는 일원 연산자로, 그 우선순위는 다른 일원 연산자와 동일합니다.

대부분의 C++ 대부분의 컴파일러는 일반적인 강제 변환 연산자를 지원합니다:

(type) expression

type은 변환된 데이터 타입입니다. 다음은 C++ 지원하는 다른 강제 변환 연산자:

  • const_cast<type> (expr): const_cast 연산자는 타입의 const를 수정합니다. / volatile 속성. const나 volatile 속성 외에, 목표 타입은 원래 타입과 동일해야 합니다. 이 유형의 변환은 주로 전달된 객체의 const 속성을操作하는 데 사용됩니다. const 속성을 추가하거나 제거할 수 있습니다.

  • dynamic_cast<type> (expr): dynamic_cast는 런타임에서 변환을 수행하고 변환의 유효성을 검증합니다. 변환을 수행하지 않으면 변환 실패로 간주되고, 표현식 expr은 null로 평가됩니다. dynamic_cast가 동적 변환을 수행할 때, type은 클래스 포인터, 클래스 참조 또는 void여야 합니다.*type이 클래스 포인터 타입이면 expr도 포인터여야 하고, type이 참조라면 expr도 참조여야 합니다.

  • reinterpret_cast<type> (expr): reinterpret_cast 연산자는 어떤 포인터를 다른 타입의 포인터로 변환합니다. 그것은 포인터를 정수로 변환하거나 정수를 포인터로 변환할 수 있습니다.

  • static_cast<type> (expr): static_cast 연산자는 비 동적 변환을 수행하고, 변환의 안전성을 보장하기 위해 런타임 클래스 검사가 없습니다. 예를 들어, 기본 클래스 포인터를派생 클래스 포인터로 변환할 수 있습니다.

위의 모든 강제 변환 연산자는 클래스와 객체를 사용할 때 사용됩니다. 아래의 예제를 통해 C++ 중에서 간단한 강제 변환 연산자를 사용하는 방법에 대해 설명합니다. 아래의 C++ 프로그램을 test.cpp 파일에 작성하고 컴파일하여 실행하세요。

#include <iostream>
using namespace std;
 
int main()
{
   double a = 21.09399;
   float b = 10.20;
   int c ;
 
   c = (int) a;
   cout << "제1행-(int)a의 값은 : " << c << endl ;
   
   c = (int) b;
   cout << "제2행-(int)b의 값은  : " << c << endl ;
   
   return 0;
}

위의 코드가 컴파일 및 실행될 때, 다음과 같은 결과가 생성됩니다:

제1행-(int)b의 값은 :21
제2행-(int)b의 값은  :10

C++ 연산자