English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
강제 변환 연산자는 특별한 연산자로, 하나의 데이터 타입을 다른 데이터 타입으로 변환합니다. 강제 변환 연산자는 일원 연산자로, 그 우선순위는 다른 일원 연산자와 동일합니다.
대부분의 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