>  기사  >  백엔드 개발  >  파생 클래스가 기본 클래스에서 비공개 순수 가상 함수를 어떻게 구현할 수 있나요?

파생 클래스가 기본 클래스에서 비공개 순수 가상 함수를 어떻게 구현할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-04 06:45:02191검색

How Can Derived Classes Implement Private Pure Virtual Functions in a Base Class?

프라이빗 범위 내의 순수 가상 함수

제공된 예와 같이 기본 클래스에서 프라이빗 순수 가상 함수가 포함된 코드를 발견하는 경우 :

class Engine
{
public:
    void SetState( int var, bool val );
    void SetState( int var, int val );

private:
    virtual void SetStateBool( int var, bool val ) = 0;    
    virtual void SetStateInt ( int var, int val ) = 0;    
};

파생 클래스가 이러한 함수를 구현하기 위해 액세스할 수 없는 것처럼 보일 수 있습니다. 그러나 파생 클래스는 전용 가상 함수를 재정의하여 자체 구현을 제공할 수 있습니다. 이는 파생 클래스 메서드가 기본 클래스에서 가상 함수를 호출할 수 없는 것과 혼동되어서는 안 됩니다.

인터페이스와 구현의 분리

개인 가상 함수는 다음을 허용합니다. 파생 클래스에서 사용자 정의할 수 있는 구현과 인터페이스 사양을 분리합니다. 공용 인터페이스는 오버로드되지 않은 개인용 가상 함수를 호출하는 오버로드된 비가상 함수 세트로 구성됩니다. "Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals"라고 알려진 이 관용어는 숨김 규칙을 관리하는 데 도움이 됩니다.

숨김 방지

공용 인터페이스는 가상이 아니고 가상 구현은 개인용이므로 파생 클래스 작성자는 기본 클래스의 멤버를 숨기는 것에 대해 걱정하지 않고 가상 함수의 자체 구현을 간단히 제공할 수 있습니다. 예:

class MyTurbochargedV8 : public Engine
{
private:
    void SetStateInt(int var, int val )  {/* new implementation */}
};

위 내용은 파생 클래스가 기본 클래스에서 비공개 순수 가상 함수를 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.