다음을 통해 공유


IUnknown 및 인터페이스 상속

COM의 상속은 코드 재사용을 의미하지 않습니다. 인터페이스와 연결된 구현이 없으므로 인터페이스 상속이 코드 상속을 의미하지는 않습니다. 즉, 인터페이스와 연결된 계약은 C++ 순수 가상 기본 클래스 방식으로 상속되고 새 메서드를 추가하거나 허용되는 메서드 사용을 추가로 한정하여 수정됩니다. COM에는 선택적 상속이 없습니다. 한 인터페이스가 다른 인터페이스에서 상속되는 경우 다른 인터페이스가 정의하는 모든 메서드가 포함됩니다.

상속은 미리 정의된 COM 인터페이스에서 드물게 사용됩니다. 미리 정의된 모든 인터페이스(및 사용자가 정의하는 모든 사용자 지정 인터페이스)는 중요한 인터페이스 IUnknown에서 해당 정의를 상속합니다. 이 인터페이스에는 QueryInterface, AddRefRelease라는 세 가지 중요한 메서드가 포함되어 있습니다. 모든 COM 개체는 QueryInterface를 사용하여 개체가 지원하는 다양한 인터페이스와 AddRefRelease를 사용하여 수명을 관리하는 수단 간에 자유롭게 이동할 수 있는 수단을 제공하기 때문에 IUnknown 인터페이스를 구현해야 합니다.

집계를 지원하는 개체를 만들 때는 독립 실행형 IUnknown 인터페이스뿐만 아니라 모든 인터페이스에 대해 하나의 IUnknown 함수 집합을 구현해야 합니다. 어쨌든 모든 개체 구현자는 IUnknown 메서드를 구현합니다. 자세한 내용은 IUnknown 사용 및 구현 섹션을 참조하세요.

IUnknown 외에도 두 번째 인터페이스에서 정의를 상속하는 몇 가지 인터페이스가 있지만 대부분은 단순히 IUnknown 인터페이스 메서드를 상속합니다. 따라서 대부분의 인터페이스는 비교적 간결하고 쉽게 캡슐화할 수 있습니다.

COM 개체 및 인터페이스