[c++] 가상 함수의 재정의(override)
가상 함수를 재정의하기 위해서는 다음과 같은 규칙을 준수해야 합니다:
- 파생 클래스에서 재정의할 함수는 기본 클래스의 가상 함수와 시그니처(매개변수 목록, 반환 유형 등)가 동일해야 합니다.
- 재정의된 함수는
virtual
키워드를 사용하여 선언될 필요가 없지만, 명시적으로 사용하는 것이 좋습니다. - 파생 클래스에서 가상 함수를 재정의할 때에는
override
키워드를 사용하여 의도를 명확히 표시하는 것이 좋습니다.
class Base {
public:
virtual void sayHello() {
std::cout << "Hello from Base" << std::endl;
}
};
class Derived : public Base {
public:
void sayHello() override {
std::cout << "Hello from Derived" << std::endl;
}
};
위의 코드에서 Base
클래스의 sayHello
함수를 Derived
클래스에서 재정의하였습니다. 이렇게 함으로써 파생 클래스의 객체가 해당 함수를 호출할 때 새로운 동작을 실행할 수 있습니다.
가상 함수의 재정의는 다형성(polymorphism)을 구현하는 데 중요한 역할을 합니다. 이는 객체 지향 프로그래밍에서 매우 유용하며, 코드의 유연성과 유지보수성을 높일 수 있습니다.
참고문헌:
- https://en.cppreference.com/w/cpp/language/override