CComObject, CComAggObject¹× CComPolyObject ÅÛÇø´ Ŭ·¡½º »ó¼Ó üÀÎÀÇ °¡Àå ¸¹ÀÌ ÆÄ»ý µÈ Ŭ·¡½º´Â Ç×»ó. ±×°ÍÀº IUnknown¿¡¼ ¸ðµç ¸Þ¼µå¸¦ ó¸® Çϱâ À§ÇØ ±×µéÀÇ Ã¥ÀÓ: QueryInterface, AddRef¹× Release. ¶ÇÇÑ, CComAggObject ¹× CComPolyObject (Áý°è °³Ã¼¸¦ »ç¿ë ÇÏ´Â) °æ¿ì Ưº° ÇÑ ÂüÁ¶ °è»ê ¹× QueryInterface ÀÇ¹Ì ³»ºÎ ¾Ë¿¡ ÇÊ¿äÇÑ Á¦°ø¡£
°³Ã¼°¡ Áý°è ¿©ºÎ ¹× DECLARE_POLY_AGGREGATABLE ¸ÅÅ©·Î ¼±¾ð ÇÏ´Â ¿©ºÎ¿¡ µû¶ó ´Þ¶ó Áý´Ï´Ù CComObject, CComAggObject¶Ç´Â CComPolyObject »ç¿ë ¿©ºÎ:
CComAggObject ¹× CComObject »ç¿ëÀÇ ÀåÁ¡Àº IUnknown ±¸ÇöÀ» »ý¼º µÇ´Â °³Ã¼ÀÇ Á¾·ù¿¡ ´ë ÇÑ ÃÖÀûÈ. ¿¹¸¦ µé¾î, Å×À̺íÀÎµÈ °³Ã¼ ¿¡¼¸¸ ÂüÁ¶ Ƚ¼ö Áý°è °³Ã¼ ³»ºÎ ¾Ë¿¡ ´ë ÇÑ ÂüÁ¶ Ƚ¼ö¿Í ¿ÜºÎ ¾Ë ¼ö¿¡ ´ë ÇÑ Æ÷ÀÎÅ͸¦ ÇÊ¿ä·Î ÇÏ´Â µ¿¾È¡£
CComPolyObject »ç¿ëÀÇ ÀåÁ¡Àº CComAggObject ¹× CComObject Áý°è ¹× Å×À̺íÀÎ °æ¿ì¸¦ ó¸® Çϱâ À§ÇØ ¸ðµâ¿¡ ÇÊ¿ä ÇÏÁö ¾Ê´Â. ´ÜÀÏ CComPolyObject °³Ã¼´Â µÎ °æ¿ì¸¦ ó¸®ÇÕ´Ï´Ù. ÀÌ ¸ðµâ¿¡ Á¸Àç ÇÏ´Â vtableÀÇ º¹»çº» Çϳª¸¸ ÇÔ¼ö Áß ÇϳªÀÇ º¹»çº»À» ÀÇ¹Ì ÇÕ´Ï´Ù. ±ÍÇÏÀÇ vtable Å« °æ¿ìÀÌ ½ÇÁúÀûÀ¸·Î ¸ðµâ Å©±â¸¦ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, ±ÍÇÏÀÇ vtable ÀÛÀº °æ¿ì CComPolyObject ¸¦ »ç¿ë ÇÏ ¿© ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù ¾à°£ ´õ Å« ¸ðµâ Å©±â´Â Áý°è ¶Ç´Â Å×À̺íÀÎ °³Ã¼¿¡ ´ë ÇÑ ÃÖÀûÈ µÇÁö ¾ÊÀº ¶§¹®¿¡ CComObject , CComAggObject ±×¸®°í¡£
DECLARE_POLY_AGGREGATABLE ¸ÅÅ©·Î ÀÚµ¿À¸·Î Ãß°¡ µË´Ï´Ù Ŭ·¡½º Á¤ÀÇ¿¡ ATL °³Ã¼ ¸¶¹ý»ç¿¡¼ ¸ðµç ±ÇÇÑ ¶Ç´Â Internet Explorer ÄÁÆ®·ÑÀ» ¸¸µé ¶§. ¸¶¹ý»ç¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ATL ÇÁ·ÎÁ§Æ® ¸¸µé±â À» ÂüÁ¶ ÇϽʽÿÀ.