2019년 11월 15일 금요일

c++ - Interface란

인터페이스는 특정 기능을 구현할 것을 약속한 추상 형식을 말합니다. Java나 C# 등의 다른 OOP언어에서는 인터페이스 형식을 제공합니다.

C++언어에서는 인터페이스 형식을 제공하지는 않지만 순수 가상 메서드를 이용하여 정의할 수 있습니다.

인터페이스는 멤버 필드나 구체적으로 구현한 메서드를 갖지 않고 특정 기능을 약속한 메서드만 갖습니다. 그리고 모든 멤버는 사용하는 개발자와의 약속으로 모든 멤버를 public으로 접근 지정합니다.

C++언어에서는 구조체는 디폴트 가시성이 public이어서 구조체를 이용하여 인터페이스를 정의하는 이들도 많습니다.


예제 코드)

#include "stdafx.h"
#include <iostream>

#define interface struct

using namespace std;

template <typename T>
void ShowData(const T& data)
{
cout << "Data : " << data << endl;
}

interface ITest
{
virtual void Play()
{
ShowData(1);
}
};

class test1 : public ITest
{
public:

virtual void Play()
{
ShowData(2);
}
};


int main()
{
test1 *t = new test1();

t->Play();

    return 0;
}


이렇게 플레이 한다면 결과 값은 "2" 이 나오게 될것입니다.

하지만 test1 클래스에 아래와 같이 아무것도 정의하지 않는다면

class test1 : public ITest
{
 public:

};


결과 값은 "1"이 나오게 될것입니다.

출처: https://ehclub.co.kr/2136 [언제나 휴일] (코드 제외)