추상 클래스
- 인스턴스를 만들 수 없는 클래스
class AbstractClass
{
// 아래와 같은 가상 함수를 순수 가상 함수(Pure Virtual Function)라 하며
// 정의는 하지 않고 보통 선언만 한다.
virtual void Foo() = 0;
}
AbstractClass obj; // 컴파일 오류! 추상 타입은 인스턴스를 생성할 수 없다.
// Abstract는 추상 클래스이다.
struct Abstract
{
virtual void Foo() = 0;
};
struct Base : Abstract
{
// 순수 가상 함수를 오버라이딩 하지 않으면
// Abstract::Foo()를 그대로 Base가 갖게 되며,
// Base 또한 추상 클래스가 된다.
};
// Derived는 Foo()를 오버라이딩 하였으므로
// 추상 클래스가 아닌 구체 클래스(Concrete Class)다.
struct Derived : Base
{
void Foo() { }
};
Abstract temp; // 컴파일 오류! Abstract는 추상 타입
Base temp; // 컴파일 오류! Base는 추상 타입
Derived d; // OK. Derived는 구체 타입
[C++] getline() (0) | 2022.06.19 |
---|---|
[C++] 객체 지향 프로그래밍의 동적 할당 (0) | 2022.06.03 |
[C++] 상속 (0) | 2022.05.31 |
[C++] explicit (0) | 2022.05.31 |
[C++] 오버로딩(OverLoadding) (0) | 2022.05.31 |
댓글 영역