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
'Nice programing' 카테고리의 다른 글
Node.js 및 Microsoft SQL Server (0) | 2020.11.04 |
---|---|
저장 프로 시저 호출을위한 Spring JDBC 템플릿 (0) | 2020.11.04 |
중첩 된 객체를 사용할 때 AngularJS에서 재귀 템플릿을 어떻게 만들 수 있습니까? (0) | 2020.11.04 |
내 PowerShell 종료 코드가 항상 "0"인 이유는 무엇입니까? (0) | 2020.11.04 |
파이썬으로 새 텍스트 파일을 만들 때 오류가 발생합니까? (0) | 2020.11.04 |