순수 가상 함수는 함수 정의를 작성할 필요가 없고 선언만 하면 되는 C++의 가상 함수입니다. 선언에서 0을 할당하여 선언합니다.
추상 클래스는 최소한 하나의 순수 가상 기능을 갖는 C++의 클래스입니다.
-
추상 클래스는 순수 가상 함수와 함께 일반 함수와 변수를 가질 수 있습니다.
-
추상 클래스는 인스턴스화할 수 없지만 추상 클래스 유형의 포인터 및 참조는 생성할 수 있습니다.
-
추상 클래스는 주로 업캐스팅에 사용되므로 파생 클래스가 인터페이스를 사용할 수 있습니다.
-
추상 클래스에 파생 클래스가 있는 경우 모든 순수 가상 기능을 구현해야 합니다. 그렇지 않으면 추상 클래스도 됩니다.
-
Vtable에 순수 가상 기능을 위한 슬롯을 예약했기 때문에 추상 클래스의 객체를 생성할 수 없지만 주소를 입력하지 않으므로 Vtable은 불완전한 상태로 남게 됩니다.
예시 코드
#include<iostream> using namespace std; class B { public: virtual void s() = 0; // Pure Virtual Function }; class D:public B { public: void s() { cout << "Virtual Function in Derived class\n"; } }; int main() { B *b; D dobj; b = &dobj; b->s(); }
출력
Virtual Function in Derived class