자기개발/C++

C++ - interface

pi92 2021. 10. 19. 13:15

인터페이스는 특정 기능을 구현할 것을 약속한 추상 형식을 말합니다.

 

 개발자들 사이에 인터페이스 이름은 I로 시작하고 I뒤에 약속하는 기능을 붙이고 있어요. 따라서 Play 기능을 약속하는 인터페이스는 IPlay라고 명명합니다. 물론 인터페이스는 여러 개의 기능을 약속할 수 있겠죠. 이 때도 대표하는 기능을 이름에 포함하세요.

물론 인터페이스를 기반으로 파생한 형식은 약속한 기능을 재정의하여 구체적으로 구현하여야 개체를 생성할 수 있습니다. 다음은 인터페이스 IPlay에서 파생한 Man 클래스에서 약속한 기능 Play를 재정의하여 사용하는 예제 코드입니다.                                                                              

 

//인터페이스 정의를 통해 같은 방법으로 다양한 형식 개체 사용
//Program.cpp
#include <iostream>
#include <string>
using namespace std;
 
#define interface struct
interface IPlay 
{
    virtual void Play()=0;
};
 
class Man:public IPlay
{
    string name;
public:
    Man(string name)
    {
        this->name = name;
    }
    virtual void Play()
    {
        cout<<name<<" 연주하다."<<endl;
    }    
};
 
void Concert(IPlay *iplay)
{
    iplay->Play();
}
int main()
{
    Man *man = new Man("홍길동");
    Concert(man);
    delete man;
    return 0;
}

실행결과

 

홍길동 연주하다.

 

출처 : https://ehpub.co.kr/