1 분 소요


[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.

댓글남기기