타입 변환 연산자하고싶은거/C++2024. 4. 13. 15:00
Table of Contents
c++에서는 기존의 데이터형을 다른 데이터형태로 변환하는 "캐스팅" 이라는 과정이 있다.
이러한 캐스팅을 해주는 타입(형)변환 연산자(캐스팅 연산자)가 있는데
- dynamic_cast
- static_cast
- const_cast
- reinterpret_cast
가 있다.
C++ 캐스트 연산자 형태
static_cast<변경할 타입>(변경할 대상);
static_cast
c언어의 형변환 문제점을 줄인 방식이다.
- 컴파일 타임에 타입 검사를 제공하고, 강제변환이 아닌 논리적으로 가능한 타입에 대해서만 캐스팅을 진행한다.
→ 따라서 컴파일에러로 잡아낼 수 있다.
dynamic_cast
상속관계에서 다운 캐스팅을 할 때 안전하게 캐스팅을 할 수 있다.
+ 다운캐스팅?
: 부모클래스 객체가 자식클래스 타입으로 형변환하는 것. 반대로 업캐스팅도 있다.
- 런타임에 타임검사를 하기때문에 static_cast보다 속도는 느리지만, 안정성 검사로 캐스팅이 안전하다.
const_cast
const의 유무를 결정할 수 있다.
매개변수로 const를 빼먹을 수 있을 때 그런.. 사소한 실수가 생길 수 있는 부분에서 사용할 수 있다.
reinterpret_cast
강제형변환으로 static_cast와 반대되는 느낌.
- 서로 다른 클래스(계층관계가 아닌 클래스)의 객체 포인터형끼리 바꿀 수 있다.
(포인터형을 바꿔..??? 왜?????? 왜 그런 무서운 짓을)
솔직히 형변환을 찾아보면서 포인터에 대해 상당히 무지했음을, 그리고 무지함에서 발생되는 궁금증이 매우 많았다.
위 글을 읽으면서 내 궁금증은 일정부분 해소가 되었는데 앞으로도 참고해야겠다.
'하고싶은거 > C++' 카테고리의 다른 글
싱크홀 메우기 (업데이트중) (1) | 2024.04.17 |
---|---|
스마트 포인터 (0) | 2024.04.12 |
빠른 입출력, 실행속도를 높이기 위한 수단 (백준 15552) (0) | 2024.03.17 |
@ssIIIn :: 두 번째 저장공간
#개발 #게임 #일상
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!