COM의 상속이 코드 재사용을 의미하지는 않습니다. 인터페이스와 연결된 구현이 없으므로 인터페이스 상속이 코드 상속을 의미하지는 않습니다. 즉, 인터페이스와 연결된 계약이 C++ 순수 가상 기본 클래스 방식으로 상속되고 새 메서드를 추가하거나 허용되는 메서드 사용을 추가로 한정하여 수정됩니다. COM에는 선택적 상속이 없습니다. 한 인터페이스가 다른 인터페이스에서 상속되는 경우 다른 인터페이스에서 정의하는 모든 메서드가 포함됩니다.
상속은 미리 정의된 COM 인터페이스에서 드물게 사용됩니다. 미리 정의된 모든 인터페이스(및 정의한 사용자 지정 인터페이스)는 QueryInterface, AddRef및 Release세 가지 중요한 메서드를 포함하는 IUnknown중요한 인터페이스에서 해당 정의를 상속합니다. 모든 COM 개체는 IUnknown 인터페이스를 구현해야 하는데, 이는 QueryInterface사용하여 개체가 지원하는 다양한 인터페이스 간에 자유롭게 이동하고 AddRef 및 Release사용하여 수명을 관리하는 수단을 제공하기 때문입니다.
집계지원하는 개체를 만들 때 모든 인터페이스에 대해 하나의 IUnknown 함수 집합과 독립 실행형 IUnknown 인터페이스를 구현해야 합니다. 어쨌든 모든 개체 구현자는 IUnknown 메서드를 구현합니다. 자세한 내용은 IUnknown 사용 및 구현 섹션을 참조하세요.
IUnknown외에도 두 번째 인터페이스에서 해당 정의를 상속하는 몇 가지 인터페이스가 있지만, 대부분은 단순히 IUnknown 인터페이스 메서드를 상속합니다. 이렇게 하면 대부분의 인터페이스가 비교적 간결하고 쉽게 캡슐화할 수 있습니다.
관련 항목