[클래스 팩토리 뷰]를 이용하여 C++ 테스트를 하기 전에 필요한 기본 개념을 간략하게 설명합니다.

순수 가상 함수와 추상 클래스

순수 가상 함수

  • 선언은 있고 정의가 없는 가상 함수
  • = 0으로 표시
  • derived class에 구현하는 가상 함수

추상 클래스

  • 순수 가상 함수를 멤버로 갖고 있는 클래스
  • 추상 클래스는 객체를 생성할 수 없음
    • 포인터형이나 참조형으로 변수 선언
      • ex. AbstractClass * class1;
    • 상속을 받아서 객체를 만들어야 함
  • 객체 지향 프로그래밍의 다형성을 지원
  • 추상 클래스를 상속받는 함수에서 순수 가상 함수를 재정의해야 함
    • 추상 클래스를 상속받는 derived class에서 순수 가상 함수를 재정의하지 않으면 derived class도 추상 클래스가 됨
class Abstract {
	virtual void f() = 0; // pure virtual
}; // "Abstract" is abstract

class Concrete : Abstract {
	void f() override {} // non-pure virtual
	virtual void g();     // non-pure virtual
}; // "Concrete" is non-abstract

class Abstract2 : Concrete {
	void g() override = 0; // pure virtual overrider
}; // "Abstract2" is abstract

int main()
{
	// Abstract a; // Error: abstract class
	Concrete b; // OK
	Abstract& a = b; // OK to reference abstract base
	a.f(); // virtual dispatch to Concrete::f()
	// Abstract2 a2; // Error: abstract class (final overrider of g() is pure)
}

Need more help with this?
Don’t hesitate to contact us here.

Thanks for your feedback.