ÀÌÀü | ´ë¹® | ¿µ¾î

C++ ÀÇ ¼Ò¸êÀÚ´Â ÀÚµ¿À¸·Î ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù.

C++ ÀÇ ¼Ò¸êÀÚ´Â ÀÚµ¿À¸·Î ÀÛµ¿ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ¾Ï¹¬Àû(implicitly)À¸·Î È£ÃâµÇ¸ç, °èÃþÀû (hierarchically)À¸·Î È£ÃâµÈ´Ù. ±×°ÍÀÌ ¾²·¹±â ¼öÁý±â (GC, Garbage Collector)°¡ ¾Æ´Ñ ÀÌ»ó ÀÚµ¿À¸·Î ÀÛµ¿ÇÑ´Ù°í º¼ ¼ö ¾ø´Ù.

¸¶Ä¡ ÀÚµ¿À¸·Î ÀÛµ¿ÇÏ´Â °Íó·³ º¸ÀÌ´Â Àü¿ª °³Ã¼³ª Áö¿ª°³Ã¼ÀÇ ¼Ò¸êÀÚµéÀº ¸ðµÎ, ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ °³Ã¼°¡ ÇØ´ç scope ¸¦ ¹þ¾î³ª´Â ½ÃÁ¡¿¡¼­ ¾Ï¹¬ÀûÀ¸·Î È£ÃâµÈ´Ù. ¸¸ÀÏ ¼Ò¸êÀÚ°¡ ¾ø´Â ¾ð¾î·Î µ¿ÀÏÇÑ ·çƾÀ» ÀÛ¼ºÇÑ´Ù¸é scope ¿¡ ÀÇÇØ ¸íÈ®È÷ µå·¯³ª´Â ¼Ò¸ê ½ÃÁ¡¿¡¼­ ÀûÀýÈ÷ ¼Ò¸êÀÚ¿¡ ÇØ´çÇÏ´Â ÇÔ¼ö¸¦ È£ÃâÇØÁÖ¸é µÈ´Ù.

¶§·Î´Â ÀÌ·¯ÇÑ ¾Ï¹¬ÀûÀÎ »ý¼ºÀÚ/¼Ò¸êÀÚ È£ÃâÀÌ ¼º´É ¹®Á¦¿Í ¿¬°áµÇ±âµµ ÇÑ´Ù.
{
	for( i=0; i<n; i++ ) {
		MyObject object;
		object.doSomething();
		// destructor for 'object' is implicitly called here
	}
}

¸¸ÀÏ ÀÌ ·çƾÀ» ÇØ´ç °³Ã¼ÀÇ Æ¯¼º¿¡ µû¶ó ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù¸é ¼º´ÉÀº Áõ°¡ÇÒ ¼ö ÀÖ´Ù.
{
	MyObject object;
	for( i=0; i<n; i++ ) {
		object.doSomething();
	}
	// destructor for 'object' is implicitly called here
}

ÃÖÀûÈ­ ÄÄÆÄÀÏ·¯°¡ MyObject ÀÇ »ý¼ºÀÚ¿Í ¼Ò¸êÀÚ¸¦ ·çÇÁ ¹ÛÀ¸·Î º¸³»µµ µÇ´ÂÁö ÆÇ´ÜÇÒ ¼ö ÀÖÀ»¸¸Å­ ¶È¶ÈÇØÁ®ÀÖÁö ¾Ê´Ù. ¶ÇÇÑ »ý¼ºÀÚ ¼Ò¸êÀÚ È£ÃâÀÌ ¾Ï¹¬ÀûÀ¸·Î ÇàÇØÁö´Â C++ °°Àº ¾ð¾î´Â °³¹ßÀÚ°¡ À§¿Í °°Àº ÆÇ´ÜÀ» ÇÏ´Â °ÍÀ» ¹æÇØÇÑ´Ù.

Àü¿ª °³Ã¼³ª Áö¿ª °³Ã¼ÀÇ »ý¼º°ú ¼Ò¸ê ¹®Á¦´Â ÀÌ ±Û¿¡¼­ ´Ù·ç·Á´Â ¼Ò¸êÀÚ ¹®Á¦ÀÇ ÇÙ½ÉÀÌ ¾Æ´Ï´Ù. new ¿¡ ÀÇÇØ µ¿ÀûÇÒ´çµÇ´Â °³Ã¼¸¦ ¼Ò¸ê½Ã۱â À§Çؼ­´Â ºÐ¸íÈ÷ ¾î´À ½ÃÁ¡¿¡¼­ °³¹ßÀÚ°¡ delete ¸¦ È£ÃâÇØÁÖ¾î¾ß ÇÑ´Ù. À̰ÍÀº delete °¡ ¾ø´Â ¾ð¾î¿¡¼­, °³Ã¼¸¦ ¼Ò¸ê½ÃŰ´Â ÇÔ¼ö¸¦ ¸¸µé°í ±×°ÍÀ» ÀûÀýÇÑ ½ÃÁ¡¿¡¼­ È£ÃâÇØ¾ß ÇÏ´Â °Í°ú ´Ù¸¦ ¹Ù ¾ø´Â »óȲÀÌ µÈ´Ù. ¸¸ÀÏ, '¼Ò¸êÀÚ°¡ ÀÚµ¿À¸·Î ÀÛµ¿ÇÑ´Ù'¶ó´Â ¸»ÀÌ C++ ÀÇ ¾ð¾îÀû Ư¼º¿¡ ´ëÇÑ È¯»óÀ» Áشٸé, C++ À» Àß ¸ø ÀÌÇØÇÒ ÃæºÐÇÑ °¡´É¼ºÀ» Á¦°øÇØ ÁÙ °ÍÀÌ´Ù.

ÀÌ ±ÛÀº ¾ð¾î ³íÀïÀ» À¯¹ßÇÏ·Á´Â Àǵµ·Î ¾´ ±ÛÀÌ °áÄÚ ¾Æ´Ï´Ù. ´ÜÁö, C++ ¼Ò¸êÀÚÀÇ ÀÛµ¿ ¹æ½ÄÀ» Á» ´õ ÀûÀýÇÏ°Ô ¹¦»çÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ÀǰßÀ» Á¦½ÃÇÑ °Í »ÓÀÌ´Ù. ³ª´Â C ¸¦ ÁÖ °³¹ß ¾ð¾î·Î »ç¿ëÇÏÁö¸¸, C++ µµ ÁÁ¾ÆÇÑ´Ù. »Ó¸¸¾Æ´Ï¶ó Assembly, JAVA ³ª C#, ³ª¾Æ°¡ ¸ðµç ÇÁ·Î±×·¥ ¾ð¾îµéÀ» ÁÁ¾ÆÇÑ´Ù. ±×°ÍµéÀº ¸ðµÎ ³»°¡ ¿øÇÏ´Â ¸ñÀûÀ» ¾òÀ» ¼ö ÀÖÀ» Á¤µµÀÇ ÃæºÐÇÑ ±â´ÉµéÀ» °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù.


2007.03.30 ½ÃÀÛ



ÀÌÀü | ´ë¹® | ¿µ¾î