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 |
댓글