순수 가상 함수: 구현 가능성 공개
순수 가상 함수의 개념은 일반적으로 기본 클래스 내에 구현이 없는 것과 관련이 있습니다. . 그러나 순수 가상 함수가 실제로 구현을 가질 수 있다는 사실은 놀랄 수도 있습니다.
C에서는 기본 클래스 내에서 함수 본문 없이 "= 0"을 사용하여 순수 가상 함수를 선언합니다. 그러나 기본 클래스는 여전히 순수 가상 함수에 대한 구현을 정의할 수 있습니다. 이 구현은 외부 클래스에서 직접 액세스할 수 없지만 전체 범위 이름을 사용하여 파생 클래스에서 명시적으로 호출할 수 있습니다.
다음 코드 조각을 고려하세요.
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
이 예에서는 클래스 A는 순수 가상 함수 f()를 정의하지만 구현도 제공합니다. 그런 다음 파생 클래스 B는 전체 범위 이름 A::f():
class B : public A { virtual void f() { // class B doesn't have anything special to do for f() // so we'll call A's // note that A's declaration of f() would have to be public or protected to avoid a compile time problem A::f(); } };
를 사용하여 이 기본 클래스 구현에 액세스할 수 있습니다. 순수 가상 함수에 대한 구현을 제공하면 다음에 의해 재정의될 수 있는 기본 동작이 허용됩니다. 파생 클래스. 또한 파생 클래스가 자체 구현을 정의하는 경우에도 필요한 경우 일관된 기능 세트를 명시적으로 호출할 수 있습니다.
이 전략은 합리적인 기본 동작이 필요한 상황에서 자주 사용되지만 이는 필수적입니다. 이 동작을 명시적으로 호출합니다. 또한 파생 클래스가 자체 작업을 수행하면서 공통 기능 집합의 이점을 누릴 것으로 예상되는 경우에도 유용할 수 있습니다.
순수 가상 함수에 대한 구현을 제공하는 것이 일반적이지 않다는 점에 유의하는 것이 중요합니다. C로 연습하세요. 그러나 특정 시나리오에서는 유연성과 사용자 정의를 제공할 수 있는 유효한 옵션입니다.
위 내용은 순수 가상 함수를 C로 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!