인터페이스는 특정 기능을 구현할 것을 약속한 추상 형식을 말합니다. 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;
}
#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:
};
{
public:
};
결과 값은 "1"이 나오게 될것입니다.
출처: https://ehclub.co.kr/2136 [언제나 휴일] (코드 제외)