오버라이딩(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의 오버라이딩된 함수가 호출됩니다.
'IT > c++' 카테고리의 다른 글
C++ 순수 가상 함수와 추상 클래스: 다형성과 유연한 설계의 핵심 (0) | 2023.08.07 |
---|---|
C++ 가상함수: 동적 다형성의 핵심 (0) | 2023.08.06 |
C++ is-a 및 has-a 상속 조건 (0) | 2023.08.05 |
C++ 클래스 상속이란? (0) | 2023.08.05 |
C++ Mutable 키워드: 객체 내 값의 가변성을 관리하는 유용한 도구 (0) | 2023.08.04 |
댓글