- 개념
하나 이상의 순수 가상 함수를 선언한 클래스로 구체적인 클래스가 파생될 수 있는 일반 개념의 식 역할을 하는 클래스 입니다.
-> 하나 이상의 순수 가상 멤버 함수를 선언하여 추상 클래스를 만듭니다.
-> 순수 지정자(= 0) 구문을 사용하여 선언된 가상 함수입니다.
-> 추상 클래스에서 파생된 클래스는 순수 가상 함수를 구현해야 합니다.
추상 클래스는 객체 생성이 안되는 이유
- 안 구현될 가능성 때문에 생성 불가 코드적으로 막음 -> 코드적 오류난다.
-> 순수 가상함수가 선언만 있고 구현을 했을수도 있고 안했을수도 있는 가능성 때문에 코드적으로 막아둔것이라고 봅니다.
class A
{
public:
virtual void Test()= 0;
void Test2()
{
int a;
};
};
int main()
{
//A* AA = new A(); 코드적 에러
// A test; 코드적 에러
}
가상 함수(virtual function)
C++에서 가상 함수(virtual function)는 파생 클래스에서 재정의할 것으로 기대하는 멤버 함수를 의미합니다.
순수 가상함수
가상 함수 중 추상 클래스를 상속 받는 자식 클래스에서 반드시 재정의해야하는 맴버 함수
1. 객체화 시킬수 없다 -> 순수가상함수는 구현이 되어 있을수도 있고 없을수도 있다.
2. 자식에게 강요할수 함수의 구현강요
추상 클래스를 상속 받는 자식 클래스가 순수 가상함수를 선언안하면 생성 자체가 안된다. -> 코드적 에러 발생 -> 생성이 안됨
(virtual) 소멸자에 순수 가상함수 (=0) 하는 이유?
다른 함수를 순수 가상 함수로 만들지 않고 클래스를 추상화하고 싶을 때 사용하는 방법이다.
virtual ~A() = 0
{
};