c++) 23. 캐스팅(타입 변환)
2021. 4. 2. 15:09ㆍC++
728x90
1) static_cast
static_cast는 타입 원칙에 비춰볼 때 상식적인 캐스팅만 허용해 줍니다.
간단한 예제를 들어보겠습니다.

기존 C언어 문법에선 int형끼리 연산해서 float로 바꾸려면 분자 분모 중 한 데이터를 (float)을 이용해 float으로 타입 변환을 해주어야 했습니다.
하지만 C++문법으로 넘어오면서 static_cast를 사용하게 되었습니다.

>>결과

static_cast의 기본형식은 다음과 같습니다.
static_cast 기본형식
=>static_cast<변환 타입>(원본 데이터)
또한 static_cast는 클래스 상속관계에서도 변환이 가능합니다.
간단한 예제를 보겠습니다.
다음과 같이 간단한 Player, Knight, Archer 세 개의 클래스를 작성하였습니다. 그리고 Knight, Archer클래스는 Player클래스를 상속받는 상황입니다.

그리고 다음과 같이 상속관계를 갖는 클래스끼리 변환하는 코드를 작성하였습니다.

자식 -> 부모 변환은 안전하기 때문에 따로 캐스팅을 해주지 않아도 빌드를 통과할 수 있지만 부모 -> 자식 클래스에서는 static_cast를 사용해야 변환을 할 수 있게 됩니다.
728x90
'C++' 카테고리의 다른 글
| C++) 25. 함수 객체(Functor) (0) | 2021.04.06 |
|---|---|
| C++) 24. 함수 포인터 (0) | 2021.04.06 |
| C++) 22. 동적할당 (0) | 2021.04.01 |
| C++) 21. static (0) | 2021.03.31 |
| C++) 20. 다형성 (0) | 2021.03.27 |