Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 순수 가상 함수 및 추상 클래스


순수 가상 함수는 함수 정의를 작성할 필요가 없고 선언만 하면 되는 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