두 가지 큰 특징이 있다. 묵시적 다운캐스트는 당연히 안되며, 상속 관계에 있는 클래스가 아니라면, static cast
가 불가능하다.
#include <iostream>
class Parent {};
class Child1 : public Parent {};
class Child2 : public Parent {};
class Unrelated {};
int main(void) {
Child1 a;
Parent *b = &a; // Implicit upcast cast
Child1 *c = b; // Implicit downcast -> No!
Child2 *d = static_cast<Child2 *>(b); // Explicit downcast
Unrelated *e = static_cast<Child2 *>(b); // Explicit conversion -> No
return 0;
}