Şablon sınıfları, CComObject, CComAggObjectve CComPolyObject her zaman miras zincirinin en türetilmiş sınıfları vardır. IUnknowntüm yöntemlerini işlemek için kendi sorumluluğunuzdadır: QueryInterface, AddRefve yayın. Ayrıca, CComAggObject ve (toplanmış nesneleri için kullanıldığında) CComPolyObject özel başvuru sayımı ve gerekli iç bilinmeyen için QueryInterface semantiği sağlamak.
CComObject, CComAggObjectya da CComPolyObject kullanılıp kullanılmadığını olup declare_poly_aggregatable makro bildirmek ve nesne olup toplanan bağlıdır:
CComAggObject ve CComObject kullanmanın avantajı, IUnknown uygulanması oluşturulan nesne türü için optimize edilmiş olduğunu. Hem iç bilinmeyen bir başvuru sayısı hem de dış bilinmeyen bir işaretçi toplanmış nesne ihtiyacı ise, nonaggregated bir nesneyi bir gönderim sayısı yeterlidir.
CComPolyObject kullanmanın avantajı, hem CComAggObject hem de CComObject modülü içinde toplanmış ve nonaggregated durumlar ele sahip önlemek olduğunu. Tek bir CComPolyObject nesne, her iki durumda işler. Bu vtable tek bir kopyası ve işlevleri tek bir kopyasını, modül var demektir. Senin vtable büyükse, bu modül boyutu önemli ölçüde azaltabilirsiniz. Senin vtable küçük, toplanan ya da nonaggregated bir nesne için getirilmemiştir çünkü CComAggObject ve CComObject gibi Ancak, CComPolyObject kullanarak biraz daha büyük bir modül boyutu neden olabilir.
Tam denetim veya Internet Explorer'ın denetimi oluşturduğunuzda declare_poly_aggregatable makrosu, sınıf tanımının atl nesne sihirbaz tarafından otomatik olarak eklenir. Sihirbazı hakkında daha fazla bilgi için bkz: atl projesini oluşturma.