c++) 23. 캐스팅(타입 변환)

2021. 4. 2. 15:09C++

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