프라이빗 범위 내의 순수 가상 함수
제공된 예와 같이 기본 클래스에서 프라이빗 순수 가상 함수가 포함된 코드를 발견하는 경우 :
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!