프로그래밍 공부
작성일
2023. 10. 10. 16:06
작성자
WDmil
728x90

파생클래스(자식 클래스) 의 객체를 기본 클래스의 객체로 변환하는것을 의미한다.

 

이것은 부모 클래스의 포인터, 또는 참조로 자식 클래스를 가리키는것을 말한다.

 

Upcasting의 기본개념은 다음과 같다.

 

  1. 다형성을 구현할 수 있다.
    1. 여러 자식 클래스 객체를 동일 부모 클래스 포인터 또는 참조로 처리할 수 있다.
  2. 코드의 유연성을 높일 수 있다.
    1. 새로운 자식 클래스를 추가하더라도 기존 코드를 변경하지 않고 사용할 수 있다.

유의!

부모클래스에 정의되지 않은. 자식클래스 만의 함수에는 접근할 수 없다!

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