순수 가상 함수: 구현 및 목적
C에서 순수 가상 함수는 일반적으로 구현을 제공하지 않고 메서드의 인터페이스를 선언하는 것과 관련됩니다. 그러나 아래 그림과 같이 구현을 통해 순수 가상 함수를 갖는 것이 가능합니다.
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
이 코드는 구문적으로는 유효하지만 목적과 사용법에 대해서는 추가 설명이 필요합니다.
순수 가상 함수 구현 제공 목적:
기본 클래스는 순수 가상 함수 구현을 정의할 수 있습니다. 파생 클래스가 자체 구현을 제공해야 하는 경우에도 마찬가지입니다. 이 구현의 목적은 다음과 같습니다.
기본 클래스 구현을 호출하는 방법:
파생 클래스는 전체 범위를 사용하여 순수 가상 함수의 기본 클래스 구현을 호출할 수 있습니다. 이름:
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의 순수 가상 함수를 구현할 수 있습니까? 왜 그렇게 하시겠습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!