묵시적(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
'C++ > 기본 문법' 카테고리의 다른 글
<C++> Template(템플릿) 정리 (0) | 2022.09.28 |
---|---|
<C++> 가상 함수 테이블(virtual function table) (0) | 2022.09.28 |
<C++11> SmartPointer(스마트 포인터) (0) | 2022.09.28 |
Lvalue와 Rvalue 차이 (0) | 2022.09.28 |
<C++> string reverse(), substr() (0) | 2022.07.20 |