728x90
파생클래스(자식 클래스) 의 객체를 기본 클래스의 객체로 변환하는것을 의미한다.
이것은 부모 클래스의 포인터, 또는 참조로 자식 클래스를 가리키는것을 말한다.
Upcasting의 기본개념은 다음과 같다.
- 다형성을 구현할 수 있다.
- 여러 자식 클래스 객체를 동일 부모 클래스 포인터 또는 참조로 처리할 수 있다.
- 코드의 유연성을 높일 수 있다.
- 새로운 자식 클래스를 추가하더라도 기존 코드를 변경하지 않고 사용할 수 있다.
유의!
부모클래스에 정의되지 않은. 자식클래스 만의 함수에는 접근할 수 없다!
class Animal {
public:
void makeSound() {
cout << "Animal makes a sound" << endl;
}
};
class Dog : public Animal {
public:
void makeSound() {
cout << "Dog barks" << endl;
}
};
int main() {
Dog myDog;
Animal* animalPtr = &myDog; // Upcasting
animalPtr->makeSound(); // Output: "Animal makes a sound"
return 0;
}
위 함수에는 개라는 자식 클래스가 Animal이라는 부모 클래스를 상속받아서 이용된다.
즉, Dog를 실행하면. Animal 생성 -> Dog 생성 순으로 생성자가 일어난다.
그러나, Upcasting에 따라. myDog라는 주소값을 Animal이라는 포인터가 가져옴으로.
Animal의 makeSound가 동작한다.
자식 클래스의 함수를 동작시키려면 가상함수 를 사용해야한다.
728x90
'컴퓨터 용어 정리' 카테고리의 다른 글
가상함수 ( Virtual Function ) (0) | 2023.10.10 |
---|---|
다운 케스팅(Down Casting) (0) | 2023.10.10 |
멀티셈플링 Multisampling(표본화) (0) | 2023.10.05 |
Graphic PipeLine (0) | 2023.07.13 |
Device Context (0) | 2023.07.13 |