개발자 면접 공부/C-C++

C++의 인터페이스(Interface)

chogyujin 2022. 9. 17. 14:19
728x90

오늘은 C++의 인터페이스(Interface)의 개념을 공부하도록 하겠습니다.


c++의 인터페이스

사실 c++에는 인터페이스 라는 키워드가 없습니다. Java는 인터페이스라는 키워드를 사용하는 것이 있고 또한 abstract라는 키워드를 사용하여 추상 클래스를 정의합니다.

 

하지만 c++은 그러한 키워드는 없고 개념만 가지고 있는 상태입니다.

보통 가상 함수 즉 virtual을 사용하여 오버라이딩을 기대하며 기반클래스에서 사용하는 방법을 다들 알고있을겁니다.

거기에 virtual함수 를 =0을 주면 pure virtual함수로 만들수 있다는 것도 알고 있습니다. 이것이 추상클래스라는 것도 알고있고요

virtual함수나 pure virtual함수에 대해 공부가 안되신 분들은 아래에 내용을 참고해서 공부해주시길 바랍니다.

 

https://chogyujin-study.tistory.com/23?category=1034072 

 

C++ Virtual(가상) 함수

오늘은 Virtual 함수 가상 함수에 대해 공부하도록 하겠습니다. 가상 함수란? - 기본 클래스 내에서 선언되는 파생 클래스에 의해 재정의되는 맴버함수 가상 함수를 호출하고 파생 클래스의 함수

chogyujin-study.tistory.com

https://chogyujin-study.tistory.com/24?category=1034072 

 

C++ 순수 가상 함수(추상 클래스)

순수 가상 함수에 대해 공부합시다. 순수 가상함수란? - 함수의 정의는 없으며 오직 다형성 파생 클래스에 오버라이드(override)만으로 적용되는 함수입니다. virtual void Open() = 0; 요런 형태가 됩니

chogyujin-study.tistory.com

 

하지만 순수 가상함수 하나만 클래스에서 정의를 해도 그 클래스는 추상 클래스가 됩니다.

/** 추상 클래스 선언 */
class A
{
public:
	virtual void Say() // 가상 함수
    {
    	cout<<"Say"<<endl;
    }
    virtual Ho() = 0; // 순수 가상 함수
}

이렇게만 해도 추상 클래스가 완성이 됩니다.

하지만 인터페이스의 개념은 클래스 안에 있는 함수들이 전부 순수 가상함수로만 이루어져 있습니다.

/** 추상 클래스이면서 인터페이스의 개념을 가짐 */
class A
{
public:
	virtual void Say() = 0; // 순수 가상 함수
    virtual Ho() = 0; // 순수 가상 함수
}

이런 인터페이스를 상속을 할 경우 아래의 자식 클래스들은 무조건 저 두 함수를 오버라이딩을 해줘야합니다.

 

이러한 인터페이스를 만드는 이유는 단지 뼈대만 만들어주고 나머지의 살은 프로그래머 너가 알아서 붙혀라 라는 형식으로 만들었습니다.
이를 통해 좀더 클래스가 깔끔하게 보여줄수 있으며 가독성 또한 증가합니다.

 

무기의 객체 코드를 짜야한다면 맨 위에 Weapon이라는 무기 인터페이스 즉 뼈대를 하나 만들어 무기에 필요한 함수를 정의하여

코드를 짜면 매우 직관적으로 무기아이템을 찍어내듯이 만들수 있을 기대치가 있습니다.

 

'개발자 면접 공부 > C-C++' 카테고리의 다른 글

C++ 템플릿(함수 템플릿)  (0) 2022.09.22
C++ STL 장단점  (0) 2022.09.21
가상상속  (0) 2022.09.17
C++ 객체지향 언어 4가지 특징  (0) 2022.09.01
A* 알고리즘  (0) 2022.08.24