-
윤성우 열혈 C++ 프로그래밍 16장) C++의 형 변환 연산자PROGRAMMING/C++ 2024. 1. 15. 07:24
이 책의 마지막 부분! 형 변환에 대해 정리해보고자 합니다!
(혹시 저작권에 문제가 있다면 수정하겠습니다!! 개인적인 공부용으로 정리함을 알려드립니당)
https://product.kyobobook.co.kr/detail/S000001589147
형 변환자 설명 dynamic_cast 1. 유도클래스의 포인터 및 참조형 데이터 → 기초클래스의 포인터 및 참조형 데이터
2. 기초 클래스가 Polymorphic 클래스이면 기초클래스 → 유도클래스가 가능하다.static_cast 1. 유도클래스의 포인터 및 참조형 데이터 ↔ 기초클래스의 포인터 및 참조형 데이터
2. 기본 자료형 간의 형 변환const_cast const 성향을 제거할 목적
⭐ 함수 인자전달 시 const 선언으로 인한 형(type)의 불일치가 발생해서 인자의 전달이 불가능한 경우 유용하게 사용reinterpret_cast 포인터를 대상으로 하는, 포인터과 관련있는 모든 유형의 형 변환을 허용 ※ Polymorphic class : 하나 이상의 가상(virtual) 함수를 지니는 클래스
🚨 dynamic_cast 는 안정적인 형 변환을 보장한다. 특히 컴파일 시간이 아닌 실행 시간에 안전성을 검사하도록 컴파일러가 바이너리 코드를 생성한다.
(잘못된 형변환인 경우 포인터는 NULL, 참조자는 bad_cast 예외를 발생)
// expr 을 T 타입으로 변환하겠다는 의미 dynamic_cast<T>(expr) static_cast<T>(expr) reinterpre_cast<T>(expr) // const T expr에서 const 제거 const_cast<T>(expr)
'PROGRAMMING > C++' 카테고리의 다른 글
절차형 재귀함수로 permutation 구현하기 (0) 2024.03.18 Modern C++ 알아보기 (4) 2024.03.17 윤성우 열혈 C++ 프로그래밍 15장) 예외처리(try, catch, throw, 스택풀기, 예외클래스, 예외 객체) (0) 2024.01.15 윤성우 열혈 C++ 프로그래밍 13,14장) 템플릿(template)(함수 템플릿, 템플릿 함수, 클래스 템플릿, 템플릿 클래스, 특수화, 부분 특수화) (0) 2024.01.12 윤성우 열혈 C++ 프로그래밍 11장) 연산자 오버로딩 2(대입연산자, 오버로딩, 함수 오버로딩, 스마트포인터, 펑터) (2) 2024.01.08