[클래스 팩토리 뷰]를 이용하여 C++ 테스트를 하기 전에 필요한 기본 개념을 간략하게 설명합니다.
순수 가상 함수와 추상 클래스
순수 가상 함수
- 선언은 있고 정의가 없는 가상 함수
= 0
으로 표시- derived class에 구현하는 가상 함수
추상 클래스
- 순수 가상 함수를 멤버로 갖고 있는 클래스
- 추상 클래스는 객체를 생성할 수 없음
- 포인터형이나 참조형으로 변수 선언
- ex.
AbstractClass * class1;
- ex.
- 상속을 받아서 객체를 만들어야 함
- 포인터형이나 참조형으로 변수 선언
- 객체 지향 프로그래밍의 다형성을 지원
- 추상 클래스를 상속받는 함수에서 순수 가상 함수를 재정의해야 함
- 추상 클래스를 상속받는 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.