cpp
Class Alpha {...}
// 정적할당 : 포인터가 필요없다.
Alpha a1();
Alpha a2 = Alpha();
// 동적할당 : 포인터를 써줘야 한다.
Alpha *a3 = new Alpha();
그런데, 동적할당에서 포인터의 타입이 (’=’ 기준 오른쪽) 생성자의 타입과 맞지 않아도 된다.
이것을 업캐스팅 또는 다운캐스팅이라고 한다.
동적할당 : 업캐스팅
cpp
Class Alpha {...}
Class Beta : public Alpha {...}
int main {
Alpha *x1 = new Beta();
}
// 포인터 x1은 Alpha의 멤버밖에 쓸 수 없다.
========================
포인터 | 생성자
Alpha. ====> Alpha
Beta
========================
동적할당 : 다운캐스팅
cpp