본문 바로가기
공부

C++ 추상클래스 / 인터페이스 참조

by MY블로그 2022. 12. 13.

1. 추상클래스

추상 클래스는 개념적으로 인스턴스화 할 수 없는 클래스.

즉, 인스턴스를 생성할 수 없는 클래스로, 일반적으로 하나 이상의 순수 가상 함수가 있는 클래스로 구현된다.

순수 가상 함수는 파생 클래스에 의해 재정의되어야 하는 함수이다.

이는 멤버 함수의 선언에서 "= 0"구문을 통해 정의된다.

class AbstractClass
{
    virtual void abstractMemberFunction() = 0; // 순수 가상 함수
    virtual void abstractMemberFunction1(); // 가상함수
    void abstractMemberFunction2();
};

이렇게 순수 가상함수를 1개 이상 가지고 있는 class를 추상 클래스라고 한다.

추상 클래스가 되면 해당 클래스는 인스턴스를 만들 수 없다. 

따라서 추상 클래스의 자식 class를 통해 인스턴스를 생성할 수 있다.

2. 인터페이스

인터페이스는 구현이 없다.
즉, 인터페이스 클래스에는 가상 소멸자와 순수 가상함수만 포함된다.
인터페이스 클래스는 다형성 인터페이스, 즉 순수 가상 함수 선언을 기본 클래스로 지정하는 클래스이다.

class IClass
{
public:
    virtual ~IClass();
    virtual void move_x(int x) = 0;
    virtual void move_y(int y) = 0;
    virtual void draw() = 0;
};

모든 인터페이스 클래스에는 가상 소멸자가 있어야 한다. 가상 소멸자는 IClass가 다형성으로 삭제 될 때 파생 클래스의 올바른 소멸자가 호출되도록 한다.

 

 

 

https://velog.io/@hyongti/C%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4-vs.-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%ED%81%B4%EB%9E%98%EC%8A%A4

 

[C++]추상클래스 vs. 인터페이스 클래스

추상 클래스는 개념적으로 인스턴스화 할 수 없는 클래스. 즉, 인스턴스를 생성할 수 없는 클래스로, 일반적으로 하나 이상의 순수 가상 함수가 있는 클래스로 구현된다. 순수 가상 함수는 파생

velog.io

https://junk-s.tistory.com/23

 

[C++]순수 가상함수와 추상 클래스, 인터페이스(interface)

순수 가상함수 (2018.01.31 수정 및 추가) class 상속에서 virtual 키워드를 통해 오버라이딩 함수(가상함수)를 구현 class 상속의 다형성을 구성했는데, 여기서 문제점이 하나 발생하게 됩니다. 부모 clas

junk-s.tistory.com

 

댓글