1) const_cast
: 어떤 타입에서 const 속성이나 volatile 속성을 제거할 때 사용한다.
ex)
const int ADC_Value = 100;
int i = const_cast<int> (ADC_Value);
2) static_cast
: C언어의 묵시적 형변한과 같다.
ex)
a) C스타일
int a = 5;
double b = (double)a;
b) C++스타일
double a = 10.0;
char b = static_cast<char> (a);
3) reinterpret_cast
: 일반적으로 허용하지 않는 위험한 형변환을(강제 형변환) 할 때 사용한다. 그 안의 데이터가 어떤 객체이던 그저 비트열로만 보고 원하는 형으로 강제로 변환한다는 것이다.
ex)
포인터를 정수로 변환하는 작업.
int a;
int * b;
a = reinterpret_cast<int>(&b);
4) dynamic_cast
: 유일하게 C스타일의 형변환으로 흉내낼 수 없는 형 변환 이다. dynamic_cast는 서로 상속 관계에 있는 클래스간의 형변환을 할 때 사용한다.
형 변환에 문제가 없는지 안전검사도 하는데 문제가 있을시에는 NULL값을 리턴하거나 예외를 띄운다. 가상함수가 없는 클래스는 사용할 수 없다.
ex)
truck* ptruck = new car;
truck* ptruck = dynamic_cast<truck*>(new car);
'컴퓨터 > C++' 카테고리의 다른 글
[C++] 표준 입력 함수 cin, cin.get(), cin.getline() (1) | 2013.08.21 |
---|---|
(Visual C++) (C++.NET) ( Managed C++) (C++/CLI) 의 차이점 (0) | 2013.06.07 |
[정렬][C++] Template를 이용한 Swap 함수 (0) | 2013.01.30 |
[정렬][C++] Template를 이용한 버블 정렬(Bubble Sort) (0) | 2013.01.30 |
[C++][자료구조] Template 를 이용한 Stack Source Code (0) | 2013.01.04 |