728x90
반응형
질문 : C ++에서 인터페이스를 어떻게 선언합니까?
인터페이스를 나타내는 클래스를 어떻게 설정합니까? 이것은 추상 기본 클래스입니까?
답변
bradtgmurray 의 답변을 확장하려면 가상 소멸자를 추가하여 인터페이스의 순수 가상 메서드 목록에 한 가지 예외를 만들 수 있습니다. 이를 통해 구체적인 파생 클래스를 노출하지 않고도 포인터 소유권을 다른 당사자에게 전달할 수 있습니다. 인터페이스에는 구체적인 멤버가 없기 때문에 소멸자는 아무것도 할 필요가 없습니다. 함수를 가상과 인라인으로 정의하는 것은 모순되는 것처럼 보일 수 있지만 저를 믿으십시오. 그렇지 않습니다.
class IDemo
{
public:
virtual ~IDemo() {}
virtual void OverrideMe() = 0;
};
class Parent
{
public:
virtual ~Parent();
};
class Child : public Parent, public IDemo
{
public:
virtual void OverrideMe()
{
//do stuff
}
};
가상 소멸자에 대한 본문을 포함 할 필요가 없습니다. 일부 컴파일러는 빈 소멸자를 최적화하는 데 문제가 있으며 기본값을 사용하는 것이 좋습니다.
출처 : https://stackoverflow.com/questions/318064/how-do-you-declare-an-interface-in-c
728x90
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
C ++에서 현재 시간과 날짜를 얻는 방법 (0) | 2021.06.12 |
---|---|
C와 C ++ 모두에서 유효한 코드가 각 언어로 컴파일 될 때 다른 동작을 생성하는 방법 (0) | 2021.06.11 |
표준 C ++ / C ++ 11 / C를 사용하여 파일이 존재하는지 확인하는 가장 빠른 방법 (0) | 2021.06.10 |
C ++에서 ifstream을 사용하여 한 줄씩 파일 읽기 (0) | 2021.06.09 |
정적 std :: map 초기화<int, int> C ++에서 (0) | 2021.06.08 |