ÁÁÀº ¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎÀº ÇÁ·ÎÁ§Æ® ¼º°ø¿¡ ÇʼöÁö¸¸, ¼ÒÇÁÆ®¿þ¾î¸¦ µðÀÚÀÎÇϱâ´Â ¾î·Æ´Ù. µðÀÚÀÎ °áÁ¤ÀÇ °á°ú¸¦ ±í°Ô ÀÌÇØÇÏ°í »ç¿ë °¡´ÉÇÑ µðÀÚÀÎ ´ë¾È¿¡ ´ëÇØ Àß ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ Ã¥À» ÅëÇØ ¼÷·ÃµÈ C++ °³¹ßÀÚ´Â ÃֽŠ¾ð¾î¸¦ »ç¿ëÇÑ ¼ÒÇÁÆ®¿þ¾î µðÀÚÀο¡ ´ëÇØ Ã¶ÀúÇÏ°í ½Ç¿ëÀûÀÌ¸ç ºñ±³ÇÒ ¹Ù ¾ø´Â ÈǸ¢ÇÑ °³¿äÀ» ¾ò°Ô µÉ °ÍÀÌ´Ù.C++ °»çÀÌÀÚ ÄÁ¼³ÅÏÆ®ÀΠŬ¶ó¿ì½º À̱ۺ£¸£°Å´Â ÀÇÁ¸¼º°ú Ãß»óȸ¦ °ü¸®ÇÏ°í, ¼ÒÇÁÆ®¿þ¾î °³Ã¼ÀÇ º¯°æ ¿ëÀ̼º°ú ±â´É È®À强À» Çâ»ó½ÃÅ°¸ç, ÃֽŠ±â¼ú°ú È帧À» È°¿ëÇϱâ À§ÇØ ÃֽŠµðÀÚÀÎ ÆÐÅÏÀ» Àû¿ëÇÏ°í ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎÀº ¼ÒÇÁÆ®¿þ¾îÀÇ °¡Àå Áß¿äÇÑ Æ¯¼ºÀÎ À¯Áö º¸¼ö¼º, º¯°æ ¿ëÀ̼º, ±â´É È®À强¿¡ ¿µÇâÀ» ¹ÌÄ¡¹Ç·Î ¼ÒÇÁÆ®¿þ¾î ÇÁ·ÎÁ§Æ®ÀÇ °¡Àå Áß¿äÇÑ Ãø¸éÀÌ´Ù.
ÇÁ¸®·£¼ C++ °»çÀÌÀÚ ÄÁ¼³ÅÏÆ®´Ù. Àü ¼¼°èÀûÀ¸·Î Àαâ ÀÖ´Â ±³À° °úÁ¤À» ÅëÇØ 15³â°£ C++ Àü¹® Áö½ÄÀ» °øÀ¯ÇÏ°í ÀÖÀ¸¸ç C++ ÄÜÆÛ·±½º¿¡¼ ÀÚÁÖ ¹ßÇ¥ÇÏ°í ÀÖ´Ù. 2010³â ¹Ú»ç ÇÐÀ§¸¦ ÃëµæÇÑ ÀÌÈÄ ´ë±Ô¸ð ¼ÒÇÁÆ®¿þ¾î µðÀÚÀΰú ¼ÒÇÁÆ®¿þ¾î À¯Áö º¸¼ö¼º Çâ»ó¿¡ ÁýÁßÇÏ°í ÀÖ´Ù.
01Àå: ¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎ ±â¼ú Áöħ 1: ¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎÀÇ Á߿伺À» ÀÌÇØÇ϶ó __±â´ÉÀº ¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎÀÌ ¾Æ´Ï´Ù __¼ÒÇÁÆ®¿þ¾î µðÀÚÀÎ: ÀÇÁ¸¼º°ú Ãß»óÈ °ü¸® ±â¼ú __¼ÒÇÁÆ®¿þ¾î °³¹ßÀÇ ¼¼ °¡Áö ¼öÁØ __±â´É¿¡ ÁýÁßÇϱâ __¼ÒÇÁÆ®¿þ¾î µðÀÚÀΰú µðÀÚÀÎ ¿øÄ¢¿¡ ÁýÁßÇϱâ Áöħ 2: º¯°æÀ» À§ÇÑ µðÀÚÀÎ __°ü½É»ç ºÐ¸®(separation of concerns) __ÀÎÀ§ÀûÀÎ °áÇÕ ¿¹ __³í¸®Àû °áÇÕ ´ë ¹°¸®Àû °áÇÕ __¹Ýº¹ÇÏÁö ¸» °Í __³Ê¹« À̸¥ °ü½É»ç ºÐ¸®¸¦ ÇÇÇÑ´Ù Áöħ 3: ÀÎÅÍÆäÀ̽º¸¦ ºÐ¸®ÇØ ÀÎÀ§ÀûÀÎ °áÇÕÀ» ÇÇÇ϶ó __ÀÎÅÍÆäÀ̽º¸¦ ºÐ¸®ÇØ °ü½É»ç ºÐ¸®Çϱâ __ÅÛÇø´ ÀÎÀÚÀÇ ¿ä±¸ »çÇ× ÃÖ¼ÒÈÇϱâ Áöħ 4: Å×½ºÆ® ¿ëÀ̼ºÀ» À§ÇÑ µðÀÚÀÎ __ºñ°ø°³ ¸â¹ö ÇÔ¼ö Å×½ºÆ® ¹æ¹ý __ÁøÁ¤ÇÑ ÇØ°áÃ¥: °ü½É»ç ºÐ¸® Áöħ 5: È®ÀåÀ» À§ÇÑ µðÀÚÀÎ __°³¹æ-Æó¼â ¿øÄ¢ __ÄÄÆÄÀÏ ½ÃÁ¡ÀÇ ±â´É È®À强 __³Ê¹« À̸¥ ±â´É È®ÀåÀ» À§ÇÑ µðÀÚÀÎÀ» ÇÇÇÑ´Ù 02Àå: Ãß»óÈ ±¸Ãà ±â¼ú Áöħ 6: Ãß»óÈ·Î ±â´ëÇÏ´Â ÇàÀ§¸¦ µû¸£¶ó __±â´ë¸¦ ¾î±â´Â ¿¹ __¸®½ºÄÚÇÁ ġȯ ¿øÄ¢ __¸®½ºÄÚÇÁ ġȯ ¿øÄ¢¿¡ ´ëÇÑ ºñÆÇ __ÁÁ°í ÀÇ¹Ì ÀÖ´Â Ãß»óÈÀÇ Çʿ伺 Áöħ 7: ±âÃÊ Å¬·¡½º¿Í ÄܼÁÆ® °£ À¯»ç¼ºÀ» ÀÌÇØÇ϶ó Áöħ 8: ´ÙÁß Á¤ÀÇ ÁýÇÕÀÇ Àǹ̷ÐÀû ¿ä±¸ »çÇ×À» ÀÌÇØÇ϶ó __ÀÚÀ¯ ÇÔ¼öÀÇ Èû: ÄÄÆÄÀÏ ½ÃÁ¡ Ãß»óÈ ¸ÞÄ¿´ÏÁò __ÀÚÀ¯ ÇÔ¼öÀÇ ¹®Á¦: ÇàÀ§¿¡ ´ëÇÑ ±â´ë Áöħ 9: Ãß»óÈ ¼ÒÀ¯±Ç¿¡ ÁÖÀÇÇ϶ó __ÀÇÁ¸¼º ¿ªÀü ¿øÄ¢ __Ç÷¯±×ÀÎ ¾ÆÅ°ÅØó¿¡¼ ÀÇÁ¸¼º ¿ªÀü __ÅÛÇø´À» ÅëÇÑ ÀÇÁ¸¼º ¿ªÀü __´ÙÁß Á¤ÀÇ ÁýÇÕÀ» ÅëÇÑ ÀÇÁ¸¼º ¿ªÀü __ÀÇÁ¸¼º ¿ªÀü ¿øÄ¢ ´ë ´ÜÀÏ Ã¥ÀÓ ¿øÄ¢ Áöħ 10: ¾ÆÅ°ÅØó ¹®¼ ÀÛ¼ºÀ» °í·ÁÇ϶ó 03Àå: µðÀÚÀÎ ÆÐÅÏÀÇ ¸ñÀû Áöħ 11: µðÀÚÀÎ ÆÐÅÏÀÇ ¸ñÀûÀ» ÀÌÇØÇ϶ó __µðÀÚÀÎ ÆÐÅÏÀº À̸§ÀÌ ÀÖ´Ù __µðÀÚÀÎ ÆÐÅÏÀº Àǵµ¸¦ Àü´ÞÇÑ´Ù __µðÀÚÀÎ ÆÐÅÏÀº Ãß»óȸ¦ µµÀÔÇÑ´Ù __µðÀÚÀÎ ÆÐÅÏÀº ÀÔÁõµÆ´Ù Áöħ 12: µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇÑ ¿ÀÇظ¦ ÁÖÀÇÇ϶ó __µðÀÚÀÎ ÆÐÅÏÀº ¸ñÇ¥°¡ ¾Æ´Ï´Ù __µðÀÚÀÎ ÆÐÅÏÀº ±¸Çö »ó¼¼¿¡ °üÇÑ °ÍÀÌ ¾Æ´Ï´Ù __µðÀÚÀÎ ÆÐÅÏÀº °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹ÖÀ̳ª µ¿Àû ´ÙÇü¼º¿¡ ±¹ÇÑÇÏÁö ¾Ê´Â´Ù Áöħ 13: µðÀÚÀÎ ÆÐÅÏÀº ¾îµð¿¡³ª ÀÖ´Ù Áöħ 14: µðÀÚÀÎ ÆÐÅÏ À̸§À» »ç¿ëÇØ Àǵµ¸¦ Àü´ÞÇ϶ó 04Àå: ºñÁöÅÍ µðÀÚÀÎ ÆÐÅÏ Áöħ 15: ŸÀÔ ¶Ç´Â ¿¬»ê Ãß°¡¸¦ À§ÇÑ µðÀÚÀÎ __ÀýÂ÷Àû ÇØ°áÃ¥ __°´Ã¼ ÁöÇâ ÇØ°áÃ¥ __µ¿Àû ´ÙÇü¼º¿¡¼ µðÀÚÀÎ ¼±ÅÃÀ» ÀνÄÇÑ´Ù Áöħ 16: ºñÁöÅ͸¦ »ç¿ëÇØ ¿¬»êÀ» È®ÀåÇ϶ó __µðÀÚÀÎ ¹®Á¦ ºÐ¼® __ºñÁöÅÍ µðÀÚÀÎ ÆÐÅÏ Çؼ³ __ºñÁöÅÍ µðÀÚÀÎ ÆÐÅÏ ´ÜÁ¡ ºÐ¼® Áöħ 17: ºñÁöÅ͸¦ ±¸ÇöÇÏ´Â µ¥ std::variant¸¦ °í·ÁÇ϶ó __std::variant ¼Ò°³ __µµÇü ±×¸®±â¸¦ °ª ±â¹Ý, ºñ°£¼· ÇØ°áÃ¥À¸·Î ¸®ÆÑÅ͸µÇϱâ __¼º´É º¥Ä¡¸¶Å© __std::variant ÇØ°áÃ¥ÀÇ ´ÜÁ¡ ºÐ¼® Áöħ 18: ºñ¼øȯ ºñÁöÅÍÀÇ ¼º´É¿¡ ÁÖÀÇÇ϶ó 05Àå: Àü·« µðÀÚÀÎ ÆÐÅÏ°ú Ä¿¸Çµå µðÀÚÀÎ ÆÐÅÏ Áöħ 19: Àü·«À» »ç¿ëÇØ ÀÛ¾÷ ¼öÇà ¹æ¹ýÀ» ºÐ¸®Ç϶ó __µðÀÚÀÎ ¹®Á¦ ºÐ¼® __Àü·« µðÀÚÀÎ ÆÐÅÏ Çؼ³ __¼øÁøÇÑ ÇØ°áÃ¥ÀÇ ´ÜÁ¡ ºÐ¼® __ºñÁöÅÍ¿Í Àü·« ºñ±³ __Àü·« µðÀÚÀÎ ÆÐÅÏ ´ÜÁ¡ ºÐ¼® __´ÜÀ§ Àü·« ±â¹Ý µðÀÚÀÎ Áöħ 20: »ó¼Óº¸´Ù ±¸¼ºÀ» ¼±È£Ç϶ó Áöħ 21: Ä¿¸Çµå¸¦ »ç¿ëÇØ ¼öÇàÇÒ ÀÛ¾÷À» ºÐ¸®Ç϶ó __Ä¿¸Çµå µðÀÚÀÎ ÆÐÅÏ Çؼ³ __Ä¿¸Çµå µðÀÚÀÎ ÆÐÅÏ ´ë Àü·« µðÀÚÀÎ ÆÐÅÏ __Ä¿¸Çµå µðÀÚÀÎ ÆÐÅÏ ´ÜÁ¡ ºÐ¼® Áöħ 22: ÂüÁ¶ Àǹ̷к¸´Ù °ª Àǹ̷ÐÀ» ¼±È£Ç϶ó __GoF Çü½ÄÀÇ ´ÜÁ¡: ÂüÁ¶ Àǹ̷Р__ÂüÁ¶ Àǹ̷Ð: µÎ ¹ø° ¿¹ __¸ð´ø C++ öÇÐ: °ª Àǹ̷Р__°ª Àǹ̷Ð: µÎ ¹ø° ¿¹ __µðÀÚÀÎ ÆÐÅÏÀ» ±¸ÇöÇÏ´Â µ¥ °ª Àǹ̷Р»ç¿ëÀ» ¼±È£Ç϶ó Áöħ 23: Àü·«°ú Ä¿¸Çµå´Â °ª ±â¹Ý ±¸ÇöÀ» ¼±È£Ç϶ó __std::function ¼Ò°³ __µµÇü ±×¸®±â ¸®ÆÑÅ͸µ __¼º´É º¥Ä¡¸¶Å© __std::function ÇØ°áÃ¥ ´ÜÁ¡ ºÐ¼® 06Àå: ¾î´ðÅÍ µðÀÚÀÎ ÆÐÅÏ, ¿É¼¹ö µðÀÚÀÎ ÆÐÅÏ, CRTP µðÀÚÀÎ ÆÐÅÏ Áöħ 24: ¾î´ðÅ͸¦ »ç¿ëÇØ ÀÎÅÍÆäÀ̽º¸¦ Ç¥ÁØÈÇ϶ó __¾î´ðÅÍ µðÀÚÀÎ ÆÐÅÏ Çؼ³ __°´Ã¼ ¾î´ðÅÍ ´ë Ŭ·¡½º ¾î´ðÅÍ __Ç¥ÁØ ¶óÀ̺귯¸®ÀÇ ¿¹ __¾î´ðÅÍ¿Í Àü·« ºñ±³ __ÇÔ¼ö ¾î´ðÅÍ __¾î´ðÅÍ µðÀÚÀÎ ÆÐÅÏÀÇ ´ÜÁ¡ ºÐ¼® Áöħ 25: Ãß»ó ÅëÁö ¸ÞÄ¿´ÏÁòÀ¸·Î ¿É¼¹ö¸¦ Àû¿ëÇ϶ó __¿É¼¹ö µðÀÚÀÎ ÆÐÅÏ Çؼ³ __ÀüÅëÀûÀÎ ¿É¼¹ö ±¸Çö __°ª Àǹ̷ÐÀ» ±â¹ÝÀ¸·Î ÇÑ ¿É¼¹ö ±¸Çö __¿É¼¹ö µðÀÚÀÎ ÆÐÅÏÀÇ ´ÜÁ¡ ºÐ¼® Áöħ 26: CRTP¸¦ »ç¿ëÇØ Á¤Àû ŸÀÔ ¹üÁÖ¸¦ µµÀÔÇ϶ó __CRTP¿¡ ´ëÇÑ µ¿±â __CRTP µðÀÚÀÎ ÆÐÅÏ Çؼ³ __CRTP µðÀÚÀÎ ÆÐÅÏ ´ÜÁ¡ ºÐ¼® __CRTPÀÇ ¹Ì·¡: CRTP¿Í C++20 ÄܼÁÆ® °£ Â÷ÀÌ Áöħ 27: Á¤Àû ¹Í½ºÀΠŬ·¡½º¿¡ CRTP¸¦ »ç¿ëÇ϶ó __°Å¸ÀÔ(Strong type)ÀÇ µ¿±â __±¸Çö ÆÐÅÏÀ¸·Î CRTP »ç¿ë 07Àå: ºê¸®Áö µðÀÚÀÎ ÆÐÅÏ, ÇÁ·ÎÅäŸÀÔ µðÀÚÀÎ ÆÐÅÏ, ¿ÜºÎ ´ÙÇü¼º µðÀÚÀÎ ÆÐÅÏ Áöħ 28: ºê¸®Áö¸¦ ±¸ÃàÇØ ¹°¸®Àû ÀÇÁ¸¼ºÀ» Á¦°ÅÇ϶ó __µ¿±â ºÎ¿© »ç·Ê __ºê¸®Áö µðÀÚÀÎ ÆÐÅÏ Çؼ³ __ÇËÇà °ü¿ë±¸ __ºê¸®Áö¿Í Àü·«ÀÇ ºñ±³ __ºê¸®Áö µðÀÚÀÎ ÆÐÅÏ ´ÜÁ¡ ºÐ¼® Áöħ 29: ºê¸®Áö ¼º´É À̵æ°ú ¼Õ½ÇÀ» ÀνÄÇ϶ó __ºê¸®Áö ¼º´É ¿µÇâ __ºÎºÐ ºê¸®Áö·Î ¼º´É Çâ»ó½ÃÅ°±â Áöħ 30: Ãß»ó º¹»ç ¿¬»ê¿¡´Â ÇÁ·ÎÅäŸÀÔÀ» Àû¿ëÇ϶ó __¾çÀ» ÀÌ¿ëÇÑ ¿¹: µ¿¹° º¹»ç __ÇÁ·ÎÅäŸÀÔ µðÀÚÀÎ ÆÐÅÏ Çؼ³ __ÇÁ·ÎÅäŸÀÔ°ú std::variant ºñ±³ __ÇÁ·ÎÅäŸÀÔ µðÀÚÀÎ ÆÐÅÏ ´ÜÁ¡ ºÐ¼® Áöħ 31: ºñ°£¼· ·±Å¸ÀÓ ´ÙÇü¼º¿¡´Â ¿ÜºÎ ´ÙÇü¼ºÀ» »ç¿ëÇ϶ó __¿ÜºÎ ´ÙÇü¼º µðÀÚÀÎ ÆÐÅÏ Çؼ³ __µµÇü ±×¸®±â ´Ù½Ã º¸±â __¿ÜºÎ ´ÙÇü¼º°ú ¾î´ðÅÍ ºñ±³ __¿ÜºÎ ´ÙÇü¼º µðÀÚÀÎ ÆÐÅÏ ´ÜÁ¡ ºÐ¼® 08Àå: ŸÀÔ ¼Ò°Å µðÀÚÀÎ ÆÐÅÏ Áöħ 32: »ó¼Ó °èÅëÀ» Çü ¼Ò°Å·Î ´ëüÇÒ °ÍÀ» °í·ÁÇ϶ó __ŸÀÔ ¼Ò°ÅÀÇ ¿ª»ç __ŸÀÔ ¼Ò°Å µðÀÚÀÎ ÆÐÅÏ Çؼ³ __¼ÒÀ¯Çü ŸÀÔ ¼Ò°Å ±¸Çö __ŸÀÔ ¼Ò°Å µðÀÚÀÎ ÆÐÅÏ ´ÜÁ¡ ºÐ¼® __µÎ ŸÀÔ ¼Ò°Å ·¡ÆÛ ºñ±³Çϱâ __ ŸÀÔ ¼Ò°Å ·¡ÆÛÀÇ ÀÎÅÍÆäÀ̽º ºÐ¸® __¼º´É º¥Ä¡¸¶Å© __¿ë¾î¿¡ ´ëÇÑ ÇÑ ¸¶µð Áöħ 33: ŸÀÔ ¼Ò°ÅÀÇ ÃÖÀûÈ ÀáÀç·ÂÀ» ÀνÄÇ϶ó __¼Ò±Ô¸ð ¹öÆÛ ÃÖÀûÈ __ÇÔ¼ö µð½ºÆÐÄ¡ Á÷Á¢ ±¸Çö Áöħ 34: ¼ÒÀ¯Çü ŸÀÔ ¼Ò°Å ·¡ÆÛÀÇ ¼³Á¤ ºñ¿ëÀ» ÀνÄÇ϶ó __¼ÒÀ¯Çü ŸÀÔ ¼Ò°Å ·¡ÆÛ ¼³Á¤ ºñ¿ë __°£´ÜÇÑ ºñ¼ÒÀ¯Çü ŸÀÔ ¼Ò°Å ±¸Çö __´õ °·ÂÇÑ ºñ¼ÒÀ¯Çü Çü ¼Ò°Å ±¸Çö 09Àå: µ¥ÄÚ·¹ÀÌÅÍ µðÀÚÀÎ ÆÐÅÏ Áöħ 35: µ¥ÄÚ·¹ÀÌÅ͸¦ »ç¿ëÇØ »ç¿ëÀÚ __°èÅëÀûÀ¸·Î Ãß°¡Ç϶ó __µ¿·áÀÇ µðÀÚÀÎ ¹®Á¦ __µ¥ÄÚ·¹ÀÌÅÍ µðÀÚÀÎ ÆÐÅÏ Çؼ³ __µ¥ÄÚ·¹ÀÌÅÍ µðÀÚÀÎ ÆÐÅÏÀÇ °íÀüÀûÀÎ ±¸Çö __µÎ ¹ø° µ¥ÄÚ·¹ÀÌÅÍ ¿¹ __µ¥ÄÚ·¹ÀÌÅÍ, ¾î´ðÅÍ, Àü·« ºñ±³ __µ¥ÄÚ·¹ÀÌÅÍ µðÀÚÀÎ ÆÐÅÏ ´ÜÁ¡ ºÐ¼® Áöħ 36: ·±Å¸ÀÓ°ú ÄÄÆÄÀÏ ½ÃÁ¡ Ãß»ó__ÀÌÀ²¹è¹ÝÀû °ü°è¸¦ ÀÌÇØÇ϶ó __°ª ±â¹Ý ÄÄÆÄÀÏ ½ÃÁ¡ µ¥ÄÚ·¹ÀÌÅÍ __°ª ±â¹Ý ·±Å¸ÀÓ µ¥ÄÚ·¹ÀÌÅÍ 10Àå: ½Ì±ÛÅÏ ÆÐÅÏ Áöħ 37: ½Ì±ÛÅÏÀ» µðÀÚÀÎ ÆÐÅÏÀÌ ¾Æ´Ñ ±¸Çö ÆÐÅÏÀ¸·Î ´Ù·ç¶ó __½Ì±ÛÅÏ ÆÐÅÏ Çؼ³ __½Ì±ÛÅÏÀº ÀÇÁ¸¼ºÀ» °ü¸®Çϰųª ÁÙÀÌÁö ¾Ê´Â´Ù Áöħ 38: ½Ì±ÛÅÏÀ» º¯°æ°ú Å×½ºÆ® ¿ëÀ̼ºÀ» À§ÇØ µðÀÚÀÎÇ϶ó __½Ì±ÛÅÏÀº Àü¿ª »óŸ¦ ³ªÅ¸³½´Ù __½Ì±ÛÅÏÀº º¯°æ ¿ëÀ̼º°ú Å×½ºÆ® ¿ëÀ̼ºÀ» ÀúÇØÇÑ´Ù __½Ì±ÛÅÏ¿¡ ´ëÇÑ ÀÇÁ¸¼º µÚÁý±â __Àü·« µðÀÚÀÎ ÆÐÅÏ Àû¿ë __Áö¿ª ÀÇÁ¸¼º ÁÖÀÔÀ¸·Î Àüȯ 11Àå: ¸¶Áö¸· Áöħ Áöħ 39: µðÀÚÀÎ ÆÐÅÏÀ» °è¼Ó ¹è¿ö¶ó