CComObject, CComAggObject ¹× CComPolyObject ±¸Çö

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 ÇÁ·ÎÁ§Æ® ¸¸µé±â À» ÂüÁ¶ ÇϽʽÿÀ.

Index