728x90
안녕하세요! 이번 글에서는 C++ 프로그래밍에서 함수 오버라이딩에 대해 자세히 설명하겠습니다. 함수 오버라이딩은 기본 클래스에서 선언된 함수를 하위 클래스에서 재정의하는 것을 의미합니다. 이를 통해 다형성을 구현하고, 각 클래스에 특화된 동작을 수행할 수 있습니다.
함수 오버라이딩은 가상 함수를 활용하여 구현될 수도 있습니다. 이전 글에서 가상 함수에 대해 설명한 내용을 기반으로 이해하시면 도움이 됩니다. 함수 오버라이딩은 다음과 같은 규칙을 따릅니다:
1. 기본 클래스에서 선언된 함수를 하위 클래스에서 동일한 시그니처(이름, 매개변수 타입 및 반환 타입)로 재정의합니다.
2. 오버라이딩된 함수는 override 키워드를 사용하여 명시적으로 표시할 수 있습니다. 이는 가독성과 오류 방지에 도움이 됩니다.
3. 오버라이딩된 함수의 접근 제어자는 기본 클래스와 동일하거나 더 넓은 범위로 설정할 수 있습니다. 더 좁은 범위로 설정할 수는 없습니다.
다음은 함수 오버라이딩의 예제입니다:
class Shape
{
public:
virtual void draw()
{
cout << "Drawing a shape." << endl;
}
};
class Circle : public Shape
{
public:
void draw() override
{
cout << "Drawing a circle." << endl;
}
};
class Rectangle : public Shape
{
public:
void draw() override
{
cout << "Drawing a rectangle." << endl;
}
};
int main()
{
Shape* shape1 = new Circle();
Shape* shape2 = new Rectangle();
shape1->draw();
shape2->draw();
delete shape1;
delete shape2;
return 0;
}
- Shape 클래스는 draw() 함수를 가상 함수로 선언하고 있습니다.
- Circle 클래스와 Rectangle 클래스는 Shape 클래스를 상속받고, draw() 함수를 오버라이딩합니다.
- main() 함수에서는 Shape 포인터를 사용하여 Circle 객체와 Rectangle 객체를 가리키도록 합니다.
- draw() 함수를 호출하면 실행 시간에 적절한 함수가 호출되어 도형을 그립니다.
- 이를 통해 다형성을 구현한 것을 확인할 수 있습니다.
함수 오버라이딩은 상속 관계에서 다형성을 구현하는 데 주로 활용되며, 코드의 재사용성과 확장성을 높입니다.
다음 글에서는 연산자 오버로딩에 대해 자세히 다루겠습니다. 연산자 오버로딩은 C++의 강력한 기능 중 하나이며, 클래스 객체에 대한 특정 연산을 재정의할 수 있게 해줍니다. C++ 프로그래밍에 대한 지식을 더욱 확장해 나가는 데 도움이 되길 바랍니다. 감사합니다!
728x90
'[C++] > 프로그래밍 기초' 카테고리의 다른 글
[C++] 프로그래밍 기초 : 타입 캐스팅 (0) | 2023.06.03 |
---|---|
[C++] 프로그래밍 기초 : 연산자 오버로딩 (0) | 2023.06.03 |
[C++] 프로그래밍 기초 : 가상 함수와 순수 가상 함수 (1) | 2023.06.02 |
[C++] 프로그래밍 기초 : 클래스의 상속과 정보은닉 (0) | 2023.06.02 |
[C++] 프로그래밍 기초 : 클래스 (0) | 2023.06.02 |