부모 A를 B와 C가 각각 상속받는 상황을 생각해보자.
class A
{
public:
void Render() { cout << "A 맴버함수 작동 "<< endl;}
};
class B : public A
{
public:
void Render() { cout << "B 맴버함수 작동" << endl;}
};
class C : public A
{
public:
void Render() { cout << "C 맴버함수 작동" << endl;}
};
A* cA = new A;
A* cB = new B;
A* cC = new C;
static casting
dynamic casting
- 런타임 상황에서 캐스팅을 한다.
- 다운 캐스팅이 목적.
- RTTI 기술이 사용된다.
- 논리적(상속관계)이지 않은 캐스팅이면 NULL을 반환한다. 이를 통해 RTTI를 체크할 수 있다.
- 다운 캐스팅만 가능하다는 안전성이 있지만 static cast가 더 빨라서 다이나믹 캐스팅을 해보고 문제가 없다면 static cast로 바꿔서 쓰자.

const casting
- const속성을 지운다.
이럴거면 const 왜 지정함ㅋㅋ라고 생각하면 안되겠지?
reinterpret casing
- goto문 급의 억지코딩
그냥 캐스팅한다. 무슨 일이 일어날지 모른다.