Nice programing

C ++에서 인터페이스를 구현하는 방법?

nicepro 2020. 11. 4. 08:25
반응형

C ++에서 인터페이스를 구현하는 방법?


중복 가능성 :
C ++에서 인터페이스를 시뮬레이션하는 기본 방법

Java에는 인터페이스를 통해 클래스를 분리하는 디자인 패턴의 구현이 있기 때문에 C ++에 인터페이스가 있는지 알아보고 싶었습니다. 그렇다면 C ++에서 인터페이스를 만드는 비슷한 방법이 있습니까?


C ++에는 기본 제공 인터페이스 개념이 없습니다. 순수 가상 함수 만 포함 하는 추상 클래스사용하여 구현할 수 있습니다 . 다중 상속을 허용하므로이 클래스를 상속하여이 인터페이스 (즉, object interface :))를 포함 할 다른 클래스를 만들 수 있습니다.

예를 들면 다음과 같습니다.

class Interface
{
public:
    Interface(){}
    virtual ~Interface(){}
    virtual void method1() = 0;    // "= 0" part makes this method pure virtual, and
                                   // also makes this class abstract.
    virtual void method2() = 0;
};

class Concrete : public Interface
{
private:
    int myMember;

public:
    Concrete(){}
    ~Concrete(){}
    void method1();
    void method2();
};

// Provide implementation for the first method
void Concrete::method1()
{
    // Your implementation
}

// Provide implementation for the second method
void Concrete::method2()
{
    // Your implementation
}

int main(void)
{
    Interface *f = new Concrete();

    f->method1();
    f->method2();

    delete f;

    return 0;
}

There is no concept of interface in C++,
You can simulate the behavior using an Abstract class.
Abstract class is a class which has atleast one pure virtual function, One cannot create any instances of an abstract class but You could create pointers and references to it. Also each class inheriting from the abstract class must implement the pure virtual functions in order that it's instances can be created.


Interface are nothing but a pure abstract class in C++. Ideally this interface class should contain only pure virtual public methods and static const data. For example:

class InterfaceA
{
public:
  static const int X = 10;

  virtual void Foo() = 0;
  virtual int Get() const = 0;
  virtual inline ~InterfaceA() = 0;
};
InterfaceA::~InterfaceA () {}

참고URL : https://stackoverflow.com/questions/9756893/how-to-implement-interfaces-in-c

반응형