본문 바로가기

C++/기본 문법

<C++> 캐스트(Cast)의 종류와 사용법

묵시적(implicit) 캐스트 : 캐스트 연산자를 사용하지 않고 형변환이 이루어지는 경우

int a = 10;

char b = a;

 

명시적(explicit) 캐스트 : 캐스트 연산자를 사용해서 바꾸는 경우

int a = 10;

char b = (char)a;

 

C++의 경우 (C와 달리 컴파일 시점에 정적으로 타입검사를 수행한다)

 

1. static_cast

정수형, 실수형, 열거형, 클래스 등에 대한 기본적인 형변환. 일반변수를 const로 바꿀수도 있다.

(클래스의 경우 is-a뿐만 아니라 상속관계도 가능하다. implicit의 경우는 is-a관계만 가능)

 

2) reinterpret_cast

강제적인 형변환. 보통 포인터를 정수형으로 바꿀때 사용함

 

3) const_cast

const/volatile 선언된 변수를 일반변수로 변환하는데 사용한다.

 

4) dynamic_cast

상속관계에 있는 클래스간 형변환을 위해 쓰인다.  가상함수가 없는 클래스는 사용할 수 없다NULL값을 리턴하거나 예외를 띄우는 경우는 문제가 있는경우. 

 

int a =10;

char b = 'A';                 // implicit cast

a = static_cast<int>(b)  // explicit cast

 

암기) sr cd -> stataic reinterpret const dynamic

 

 

자세한 내용 : http://www.dreamy.pe.kr/zbxe/CodeClip/165588

 

Cast. 캐스팅. 형변환

 A.   C의 캐스팅은 너무 위험해서 (비이성적, Unresonable) 그대로 사용 못함.  1.   int a = 3; int *p = &a; double *p2 = (double*) p; *p3 = 3.4;  i.     이렇게 하면 메모리가 깨집니다. 이거 위험하죠  2.  

www.dreamy.pe.kr

 

 

 

출처

https://enderbridge.tistory.com/159

 

[C++] 캐스트(Cast)의 종류와 사용법

묵시적(implicit) 캐스트 : 캐스트 연산자를 사용하지 않고 형변환이 이루어지는 경우 int a = 10; char b = a; 명시적(explicit) 캐스트 : 캐스트 연산자를 사용해서 바꾸는 경우 int a = 10; char b = (char)a;..

enderbridge.tistory.com