반응형
순수 가상함수(Pure Virtual Function)
- 함수의 몸체가 정의되지 않은 함수를 의미한다.
- 부모 클래스에서 사용하지 않는 함수이지만 자식 클래스는 무조건 동일한 이름으로 함수를 오버라이딩을 적용하게 강제하는 방법.
사용법
class A
{
public:
virtual void Func1() = 0;
virtual void Func2() = NULL;
virtual void Func3() abstract;
};
- 가상(virtual) 함수에 NULL(0) 값을 대입하거나 abstract를 붙여주면 해당 함수는 순수가상함수로 취급된다.
- 순수 가상함수를 가진 클래스를 상속받은 클래스는 순수 가상함수의 몸체를 무조건 정의해주어야 한다.
추상 클래스(Abstract Class)
- 클래스 중에서는 객체생성을 목적으로 정의되지 않는 클래스도 존재한다.
- 멤버함수 중, 하나 이상 순수 가상함수로 선언하면 해당 클래스는 추상 클래스가 된다.
class B : public A
{
public:
void Func1() override
{
cout << "Func1" << endl;
}
void Func2() override
{
cout << "Func2" << endl;
}
void Func3() override
{
cout << "Func3" << endl;
}
};
void main()
{
A a; //컴파일 에러
B b;
b.Func1();
b.Func2();
b.Func3();
//결과
//Func1
//Func2
//Func3
}
- A 클래스는 순수 가상함수를 포함하여 추상 클래스이기 때문에, 객체 생성시에 컴파일 에러가 발생한다.
반응형
'Stack > C++' 카테고리의 다른 글
C++ 다중상속 (0) | 2021.11.22 |
---|---|
C++ 멤버함수, 가상함수 동작원리 (0) | 2021.11.17 |
C++ 업캐스팅, 오버라이딩, 가상함수 (0) | 2021.11.08 |
C++ 클래스 상속 (0) | 2021.11.04 |
C++ 함수 오버로딩, Deault 매개변수 (0) | 2021.10.24 |