IUnknown and Interface Inheritance
Overname in COM betekent niet dat code opnieuw wordt gebruikt. Omdat er geen implementaties zijn gekoppeld aan interfaces, betekent overname van interface niet de overname van code. Dit betekent alleen dat het contract dat aan een interface is gekoppeld, wordt overgenomen op een pure C++ pure-virtuele basisklasse en gewijzigd, hetzij door nieuwe methoden toe te voegen of door het toegestane gebruik van methoden verder in aanmerking te nemen. Er is geen selectieve overname in COM. Als de ene interface van een andere interface overneemt, bevat deze alle methoden die de andere interface definieert.
Overname wordt spaarzaam gebruikt in de vooraf gedefinieerde COM-interfaces. Alle vooraf gedefinieerde interfaces (en eventuele aangepaste interfaces die u definieert) nemen hun definities over van de belangrijke interface IUnknown, die drie essentiële methoden bevat: QueryInterface, AddRef-en Release-. Alle COM-objecten moeten de IUnknown-interface implementeren, omdat deze de middelen biedt, met behulp van QueryInterface, om vrij te schakelen tussen de verschillende interfaces die een object ondersteunt, evenals de middelen voor het beheren van de levensduur met behulp van AddRef- en Release-.
Bij het maken van een object dat ondersteuning biedt voor aggregatie, moet u één set IUnknown-functies implementeren voor alle interfaces, evenals een zelfstandige IUnknown interface. In elk geval implementeert een object-implementor IUnknown methoden. Zie de sectie IUnknown- gebruiken en implementeren voor meer informatie.
Hoewel er een paar interfaces zijn die hun definities overnemen van een tweede interface naast IUnknown-, nemen de meerderheid gewoon de IUnknown interfacemethoden over. Dit maakt de meeste interfaces relatief compact en gemakkelijk te inkapselen.
Verwante onderwerpen