
c++에서는 기존의 데이터형을 다른 데이터형태로 변환하는 "캐스팅" 이라는 과정이 있다.
캐스팅
자세한 정보: 캐스팅
learn.microsoft.com
이러한 캐스팅을 해주는 타입(형)변환 연산자(캐스팅 연산자)가 있는데
- dynamic_cast
- static_cast
- const_cast
- reinterpret_cast
가 있다.
C++ 캐스트 연산자 형태
static_cast<변경할 타입>(변경할 대상);
static_cast
c언어의 형변환 문제점을 줄인 방식이다.
- 컴파일 타임에 타입 검사를 제공하고, 강제변환이 아닌 논리적으로 가능한 타입에 대해서만 캐스팅을 진행한다.
→ 따라서 컴파일에러로 잡아낼 수 있다.
dynamic_cast
상속관계에서 다운 캐스팅을 할 때 안전하게 캐스팅을 할 수 있다.
+ 다운캐스팅?
: 부모클래스 객체가 자식클래스 타입으로 형변환하는 것. 반대로 업캐스팅도 있다.
[자바, Java] 캐스팅 - 업캐스팅(Upcasting), 다운캐스팅(Downcasting)
캐스팅(Casting)이란? 캐스팅이란 타입을 변환하는 것을 말하며 형변환이라고도 한다. 자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능하다. 업캐스팅(Upcasting) 업캐
computer-science-student.tistory.com
- 런타임에 타임검사를 하기때문에 static_cast보다 속도는 느리지만, 안정성 검사로 캐스팅이 안전하다.
const_cast
const의 유무를 결정할 수 있다.
매개변수로 const를 빼먹을 수 있을 때 그런.. 사소한 실수가 생길 수 있는 부분에서 사용할 수 있다.
reinterpret_cast
강제형변환으로 static_cast와 반대되는 느낌.
- 서로 다른 클래스(계층관계가 아닌 클래스)의 객체 포인터형끼리 바꿀 수 있다.
(포인터형을 바꿔..??? 왜?????? 왜 그런 무서운 짓을)
솔직히 형변환을 찾아보면서 포인터에 대해 상당히 무지했음을, 그리고 무지함에서 발생되는 궁금증이 매우 많았다.
코딩 규칙 ! c++에서의 형변환_static_cast 문제점 명시 그리고 해결책
4개의 형변환이 있음. c언어에서의 형변환을 대체하는 친구상속 관계에서의 형변환에 사용함. 그런데 그에 대한 책임은 전적으로 프로그래머에게 있다. 하향 형변환 예제 코드 \->
velog.io
위 글을 읽으면서 내 궁금증은 일정부분 해소가 되었는데 앞으로도 참고해야겠다.
'개발 > GAME CLIENT' 카테고리의 다른 글
싱크홀 메우기 (업데이트중) (1) | 2024.04.17 |
---|---|
스마트 포인터 (0) | 2024.04.12 |
빠른 입출력, 실행속도를 높이기 위한 수단 (백준 15552) (0) | 2024.03.17 |
Part1 15. 언리얼 빌드 시스템 (0) | 2024.03.16 |
Part1 14. 언리얼 오브젝트 관리 : 패키지, 애셋 (0) | 2024.03.16 |
이것저것 기억하고 싶은거 글쓰는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!