CPP_Module06
[De]Serialization
Serialization : 네트워크통신에 필요한 형식으로 변환. Deserialization : 디스크에 저장한 데이터를 읽거나 네트워크로 부터 받은 데이터를 저장할 수 있게 변환. 통신할때는 Reference Type은 다른 컴퓨터에서의 그 주소가 참조하는 값은 달라지고 프로그램종료시 참조값도 사라지게 된다. 데이터직렬화는 주소값들이 갖는 데이터들을 모아 Value Type으로 변환해준다. 이러한 데이터들은 Binary, text로 변환되어 통신에 유의미한 데이터가 된다.
### Uint_ptr : 이 형식은 UIntPtr 포인터를 지원하는 언어와 포인터를 지원하지 않는 언어 간의 데이터를 참조하는 일반적인 수단으로 사용할 수 있습니다. UIntPtr 개체를 사용하여 핸들을 보관할 수도 있습니다.
RTTI
Run Time Type Information의 약자로 프로그램 실행 중에 개체의 형식이 결정될 수 있도록 하는 메커니즘이다. dynamic_cast의 경우 RTTI에 의존적인데 초기단계 분석에서는 static_cast 분석을 사용하고, 불가능하면 RTTI를 사용하는 구조로 설계되었다. virtual 클래스도 RTTI를 사용한다고 보면 된다.
Cast Operator | Description |
---|---|
dynamic_cast | 다형 형식 변환 |
static_cast | 비다형 형식 변환 |
const_cast | const, volatile 및 __unaligned 특성을 제거 |
reinterpret_cast | 비트의 단순 재해석 |
safe_cast | 사용 C++/CLI 안정형 MSIL생성 |
dynamic_cast < type-id > ( expression )
type-id : 레퍼런스나 포인터
포인터 캐스트 실패시 NULL반환.
레퍼런스 캐스트 실패시 bad cast exception 발생
static_cast <type-id> (expression)
static_cast<바꾸려고 하는="" 타입="">(대상);
compile 타임에 형변환에 대한 타입 오류를 발견할 수 있다.
실수와 정수, 열거형과 정수형, 실수와 실수 사이의 변환 등을 허용.
arr -> point로 변경 가능.
function -> function pointer로 변경 가능.
포인터 타입을 다른것으로 변환 하는 것을 미허용.
상속 관계에 있는 포인터 끼리 변환 가능.
downcast (static_cast<자식클래스>(부모클래스))시에는 unsafe.
자식클래스>바꾸려고>
댓글남기기