CPP Module 6
Exercise 00 : Conversion of scalar types
static_cast<>
를 사용한 형변환이 주가 되는 과제
main
함수의 매개변수로 받은 C 스트링을 string
으로 우선 만들어놓은 후, 해당 스트링을 double
형으로 변환하여 사용
- 변환에는
strtod()
함수를 이용 strtod()
함수의 두번째 인자로 받는char
형 포인터에는double
형으로 변환이 불가능한 문자의 위치가 저장됨- 즉, 변환이 정상적으로 이루어졌을 경우에는 문자열 끝의
\0
위치를 반환
inf
는 infinity
를 뜻하고, nan
은 Not a number
의 약자로 숫자가 아님을 뜻함
문제에서 inf
의 경우 +,-를 구분하라고 하였으므로 std::showpos
를 사용해 부호를 표시
std::numeric_limits<>::digits10
은 정밀도의 손실 없이 해당 형식이 나타낼 수 있는 10진수 자릿수를 뜻함
Exercise 01 : Serialization
포인터를 변환하는 경우에는 일반적인 형 변환인 static_cast<>
를 사용할 수 없음
따라서 reinterpret_cast<>
를 사용하여 Data
와 uintptr_t
형 사이의 변환을 강제로 실행
과제 이름인 Serialization(직렬화)
란 메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것을 뜻함
- 데이터를 저장할 경우 추후 메모리가 해제될 수 있고, 통신하는 경우에는 수신하는 기기가 다른 메모리를 가지고 있기 때문에 메모리의 주소인 포인터값은 아무런 의미를 가지지 못함
- 따라서 포인터값이 아닌 해당 포인터가 가리키는 값을 그대로 사용하여야 하며, 이 때 특정 포인터를 가지고 값 형식으로 변환해주는 것이 직렬화임
Exercise 02 : Identify real type
RTTI(Runtime Type Information)
의 dynamic_cast<>
를 사용하는 과제
관련 지식을 미리 정리해두었던 내용