dynamic_cast

김재혁·2025년 1월 16일
0

dynamic_cast

  • 런타임 타입 정보를 사용해 객체의 타입을 안전하게 변환하는 연산자.
  • 상속 관계에 있는 클래스들 간의 포인터 또는 참조를 변환할 때 사용.
  • 부모 클래스 포인터나 참조를 자식 클래스 타입으로 변환하려 할 때 유용.

형식

dynamic_cast<new_type>(expression)
  • new_type : 변환하려는 타입
  • expression : 변환하려는 객체나 포인터

예시 (팀 프로젝트 과제)

bool GameManager::KillDragon(Monster* monster)
{
	if (dynamic_cast<Dragon*>(monster) != nullptr && monster->getHealth() <= 0)
	{
		cout << "꾸웨웨웽엑!!!!!" << endl;
		cout << "드래곤이 땅에 떨어지며 땅울림이 일어납니다." << endl;
		cout << "축하합니다!! 모든 몬스터를 처치하여 " << player->getName() << "은(는) 자신의 운이 나쁘지 않음을 깨달았습니다!" << endl;

		EndGame();
		
		return true;

	}
	return false;
}

과정

if (dynamic_cast<Dragon*>(monster) != nullptr && monster->getHealth() <= 0)
  • monster 객체가 Dragon 타입으로 변환 가능한지 검사.
    monster가 실제로 Dragon 타입이면 Dragon*타입의 포인터를 반환하고 아니면 nullptr을 반환.

이를 통해 안전하게 Dragon 객체에만 해당하는 로직을 실행하고, Dragon이 아닌 다른 객체들에 대해서는 동작하지 않게 설정 가능.

0개의 댓글