본문 바로가기
IT/c++

C++ 오버라이딩(overriding)

by 뉴코딩맨 2023. 8. 5.
오버라이딩(Overriding)은 객체 지향 프로그래밍에서 사용되는 중요한 개념 중 하나입니다. 이는 부모 클래스의 멤버 함수를 자식 클래스에서 동일한 이름과 파라미터로 다시 정의하는 것을 의미합니다. 이로써 자식 클래스는 부모 클래스의 멤버 함수를 자신의 필요에 맞게 재정의할 수 있습니다.
 
 

오버라이딩의 조건

  • 상속 관계: 오버라이딩은 부모 클래스와 자식 클래스 간에 상속 관계가 있을 때에만 가능합니다.
  • 이름과 파라미터 일치: 오버라이딩된 함수는 부모 클래스의 함수와 이름, 파라미터가 정확하게 일치해야 합니다.
  • 접근 지정자: 오버라이딩된 함수의 접근 지정자는 부모 클래스의 함수와 동일하거나 더 넓은 범위로 지정되어야 합니다.

 

예시

 

 

#include <iostream>

class Animal {
public:
    virtual void makeSound() {
        std::cout << "Animal makes a sound" << std::endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() override {
        std::cout << "Dog barks" << std::endl;
    }
};

int main() {
    Animal *animal = new Dog();
    animal->makeSound();  // Dog 클래스의 오버라이딩된 함수가 호출됨

    delete animal;

    return 0;
}
 
위 예시에서 Animal 클래스는 기본적인 동물의 소리를 출력하는 makeSound() 함수를 가지고 있습니다. Dog 클래스는 이 함수를 오버라이딩하여 개의 짖는 소리를 출력하도록 재정의하였습니다. 이후 Animal 포인터를 사용하여 Dog 객체를 가리키고, makeSound() 함수를 호출하면 자식 클래스인 Dog의 오버라이딩된 함수가 호출됩니다.
 

댓글