본문 바로가기
프로그래밍/C++

dynamic_cast

by 코끼리_땃쥐 2023. 2. 14.

dynamic_cast 형 변환 연산자는 다음의 형태를 갖는다.

dynamic_cast<T>(expr)

즉, <> 사이에 변환하고자 하는 자료형의 이름을 두되, 객체의 포인터 또는 참조형이 와야하며, () 사이에는 변환 대상이 와야 한다. 그리고 요구한 형 변환이 적절한 경우에는 형 변환된 데이터를 반환하지만, 요구한 형 변환이 적절하지 않은 경우에는 컴파일 시 에러가 발생한다. 물론 여기서 말하는 적절한 형 변환은 다음의 경우를 뜻한다.

 

"상속 관계에 놓여 있는 두 클래스 사이에서 듀오 클래스의 포인터 및 참조형 데이터를 기초 클래스의 포인터 및 참조형 데이터로 형 변환 하는 경우"

 

#include <iostream>

class Car
{
private:
	int fuelGauge;
public:
	Car(int fuel) : fuelGauge(fuel)
    { }
	void ShowCarState() { std::cout << "잔여 연료량 : " << fuelGauge << std::endl; }
};

class Truck : public Car
{
private:
	int freightWeight;
public:
	Truck(int fuel, int weight) : Car(fuel), freightWeight(weight)
    { }
    void ShowTruckState()
    {
    	showCarState();
        std::cout << "화물의 무게 : " << freightWeight << std::endl;
    }
};

int main(void)
{
	Truck * ptruck = new Truck(80, 200);
    Car * pcar = dynamic_cast<Car*>(ptruck);
    
    return 0;
}

 

'프로그래밍 > C++' 카테고리의 다른 글

static_cast  (0) 2023.02.14
C++ 의 예외처리 메커니즘  (0) 2023.02.10
클래스 템플릿의 특수화  (4) 2023.02.09
C++ 배열 기반의 문자열 입 출력  (0) 2021.11.09
C++ 입력받기  (0) 2021.11.09

댓글