열렬히.뛰기

동적할당과 캐스팅

Language > 프로그래밍 언어 > C++ > Cpp : 기초 > 동적할당과 캐스팅

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