순수 가상함수란 선언(declaration)만 있고 구현(definition)이 없는 가상 함수다.
virtual void Func() = 0;
추상 클래스
위와 같은 순수 가상함수를 하나라도 가지고 있는 클래스를 추상클래스(abstract class)라고 한다. 추상 클래스는 객체를 생성할 수 없다. 추상 클래스는 멤버 함수의 원형만을 정의하고 그 구현은 자식 클래스에서 하게 된다. 추상 클래스를 상속받는 자식 클래스는 반드시 순수 가상함수를 오버라이딩 하여 재정의 해야만 한다. 그렇지 않다면 아래 그림과 같이 컴파일 오류가 난다.
이렇게 추상클래스를 활용하면 파생클래스에서 순수 가상함수를 재정의 하게끔 강제할 수 있다.
#include <iostream>
using namespace std;
class Parent {
public :
virtual void func() = 0; //순수 가상함수
};
class Child : public Parent {
public:
void func() { //무조건 재정의를 해야만 함
cout << "func" << endl;
}
};
int main(void)
{
Child c;
c.func();
return 0;
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 부모 클래스 함수 호출과 오버라이딩 (override) (0) | 2022.07.28 |
---|---|
C++ 자기 자신 참조 (this) (0) | 2022.07.28 |
C++ 클래스 접근 제한자 (Access Modifier) (0) | 2022.07.27 |
C++ 스마트 포인터 (Smart Pointer) (0) | 2022.07.26 |
C++ 바이트 패딩 (Byte Padding) (0) | 2022.07.26 |