42Seoul/CPP Module 06

ex01

재윤 2024. 1. 26. 17:13
반응형

들어가기 전 보고 가자

https://wo-dbs.tistory.com/167

 

reinterpret_cast

reinterpret_cast()는 static_cast()보다 안전성은 조금 떨어지며, C++에서 가장 강력하면서도 위험한 형변환 중 하나이다. C++ 타입 규칙에서 허용하지 않더라도 상황에 따라 캐스팅하는 것이 적합할 때

wo-dbs.tistory.com

 

  • ex01은 reinterpret_cast에 대해서 잘 알고 있는 지 확인해보는 문제이다.
  • 개념을 잘 알면 문제가 잘 풀릴 것이다.
  • prev를 선언하여 next에 넣어준 후 prev랑 next를 연결시켜주는 문제.
#include "Data.hpp"

uintptr_t serialize(Data* ptr)
{
	return(reinterpret_cast<uintptr_t>(ptr));
}

Data* deserialize(uintptr_t raw)
{
	return(reinterpret_cast<Data *>(raw));
}

int main(void)
{
	Data prev;
	Data *next;
	uintptr_t ptr;

	prev._data = "jaeyojun";
	std::cout << "prev : " << prev._data << std::endl;

	ptr = serialize(&prev);
	std::cout << "ptr : " << ptr << std::endl;

	next = deserialize(ptr);
	std::cout << "next : " << next->_data << std::endl;

	std::cout << "=========================================\\n";

	Data d;
	Data *a;
	uintptr_t memory;

	d._data = "jaeyo";

	memory = serialize(&d);
	std::cout << "memory : " << memory << std::endl;

	a = deserialize(memory);

	std::cout << "a : " << a->_data << std::endl;

	return (0);
}
반응형

'42Seoul > CPP Module 06' 카테고리의 다른 글

ex02  (1) 2024.01.26
ex00  (1) 2024.01.26