C++ 함수 재정의

C Function Overriding



이 기사에서는 C++ 프로그래밍 언어에서 함수 재정의를 다룰 것입니다. C++는 런타임 다형성을 지원합니다.

함수 재정의에서 자식 클래스는 부모 클래스에 이미 정의된 함수를 재정의합니다.







이를 통해 프로그래머는 파생된 클래스별 기능을 제공할 수 있습니다(기본 클래스에 정의되어 있음에도 불구하고).



이제 몇 가지 예를 보고 C++에서 함수 재정의 개념을 이해합니다.



예-1

아래 예제 코드에서 기본 클래스와 파생 클래스라는 두 개의 클래스를 정의했습니다. 기본 클래스에는 disp()와 같은 멤버 함수가 있습니다. Derived_Class는 Base_Class에서 상속됩니다. disp() 함수는 Base_Class에 존재하고 Derived_Class에서 재정의됩니다.





main() 함수에서 Derived_Class의 객체, 즉 d가 생성된다. 그런 다음 파생 클래스 개체에서 disp() 함수를 호출하므로 파생 클래스의 함수가 호출됩니다. 기본 클래스 버전은 여기에서 무시됩니다. 파생 클래스에서 – disp() 함수로 출력되는 것을 아래에서 볼 수 있습니다.

#포함하다

네임스페이스 표준 사용;

//기본 클래스
클래스 Base_Class
{
공공의:
무효의이익()
{
비용<< '기본 클래스의 disp() 함수.' <<;
}

};

//파생 클래스
클래스 파생_클래스:공개 Base_Class
{
공공의:
무효의이익()
{
비용<< '파생 클래스의 disp() 함수' <<;
}
};

정수기본()
{
파생_클래스 d;
NS.이익(); // 파생 클래스 객체의 disp() 함수
반품 0;
}



예-2

이 예제에서는 파생 클래스 개체를 통해 함수의 기본 클래스 버전을 의도적으로 호출하는 방법을 볼 것입니다. 파생 클래스 함수 정의에서 범위 확인 연산자 [::]를 사용하여 함수의 기본 클래스 버전을 호출합니다.

#포함하다

네임스페이스 표준 사용;

클래스 Base_Class
{
공공의:
무효의이익()
{
비용<< '기본 클래스의 disp() 함수.' <<;
}

};

클래스 파생_클래스:공개 Base_Class
{
공공의:
무효의이익()
{
Base_Class::이익(); //disp()의 기본 클래스 버전 호출
}
};

정수기본()
{
파생_클래스 d;
NS.이익();
반품 0;
}

예-3

이것은 함수 재정의의 또 다른 예입니다. 이 예에서 우리는 부모 클래스인 Animal과 두 개의 파생 클래스인 Duck과 Dog를 만들었습니다. 기본 클래스, 즉 Animal 클래스에는 sound() 멤버 함수가 있습니다.

파생 클래스/자식 클래스, 즉 Dog에서 기본 클래스 정의를 재정의하기 위해 동일한 함수, 즉 sound()를 재정의했습니다. 마찬가지로 다른 파생 클래스인 Duck에서도 동일한 함수인 sound()를 재정의했습니다.

main() 함수에서 Dog 개체와 Duck of Duck 개체를 만들었습니다. 따라서 이제 dog와 duck에 대해 sound() 함수를 호출하면 sound() 함수의 파생 클래스 버전이 호출됩니다. 아래와 같이 프로그램의 출력을 볼 수 있습니다. 따라서 함수 재정의의 도움으로 파생된 클래스별 함수를 호출할 수 있습니다.

#포함하다

네임스페이스 표준 사용;

클래스 동물
{
공공의:
무효의소리()
{
비용<< '동물의 소리!' <<;
}

};

//파생 클래스 – Dog 클래스
클래스 개:공공 동물
{
공공의:
무효의소리()
{
비용<< '개소리 - 짖어.' <<;
}
};

//파생 클래스 – Duck 클래스
클래스 오리:공공 동물
{
공공의:
무효의소리()
{
비용<< '오리 소리 - 꽥꽥.' <<;
}
};


정수기본()
{
개 개;
오리 오리;

개.소리(); //개의 소리()
오리.소리(); //오리 소리()

반품 0;
}

결론

이 기사에서는 함수 재정의에 대해 설명했습니다. C++ . C++ 언어는 런타임 다형성을 지원합니다. 함수 재정의는 C++에서 런타임 다형성을 달성하는 데 도움이 됩니다. 이 기사에서는 함수 재정의의 개념과 함수 재정의를 사용하여 런타임 다형성을 달성하는 방법을 살펴보았습니다.