<< ´ÙÁß»ó¼Ó >> ´ÙÁß »ó¼ÓÀ̶õ 2°³ ÀÌ»óÀÇ Å¬·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Æ ÇϳªÀÇ »õ·Î¿î Ŭ·¡ ½º¸¦ ¸¸µå´Â °ÍÀ» ¸»ÇÑ´Ù. (°¡À§ + Ä® + Åé -> ¸Æ°¡À̹öÄ®ÀÌ µÇ´Â ¿ø¸®¿Í µ¿ÀÏÇÏ´Ù.) * ¿ë¹ý) class ÈļÕŬ·¡½º¦£ public ¦¤¼±Á¶Å¬·¡½º1,¦£ public ¦¤¼±Á¶Å¬·¡½º2,... ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ ¸í·É¾î¾È³»(C) ÃʱâÈ­¸é(T) Á÷Á¢À̵¿(GO) Á¾·á(X) ¼±ÅÃ> pr PRINTER/CAPTURE °¡ ÁغñµÇ¾ú½À´Ï±î(Y/n) ? ¡º½ÃÁöÇÁ½º(Cezips) C/C++ÇÁ·Î±×·¡¹Ö-DOS,UNIX °­Á (go CEZIPS)¡» 641¹ø Á¦ ¸ñ:[°­ÁÂ] C++ #4 (ÇÏÀÌÅÚ ¼ÒÇÁÆ®µ¿) ¿Ã¸°ÀÌ:nowczps2(½ÃÁöÇÁ½º) 98/01/14 12:59 ÀÐÀ½:368 °ü·ÃÀÚ·á ¾øÀ½ ----------------------------------------------------------------------------- #1517 ¹Úµ¿ºó (ACCESS ) [°­ÁÂ] C++°­Á 4Æí! 08/15 03:22 410 line << ´ÙÁß»ó¼Ó >> ´ÙÁß »ó¼ÓÀ̶õ 2°³ ÀÌ»óÀÇ Å¬·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Æ ÇϳªÀÇ »õ·Î¿î Ŭ·¡ ½º¸¦ ¸¸µå´Â °ÍÀ» ¸»ÇÑ´Ù. (°¡À§ + Ä® + Åé -> ¸Æ°¡À̹öÄ®ÀÌ µÇ´Â ¿ø¸®¿Í µ¿ÀÏÇÏ´Ù.) * ¿ë¹ý) class ÈļÕŬ·¡½º¦£ public ¦¤¼±Á¶Å¬·¡½º1,¦£ public ¦¤¼±Á¶Å¬·¡½º2,... ¦¦ private ¦¥ ¦¦ private ¦¥ »ý¼ºÀÚ°¡ È£ÃâµÇ´Â ¹æ¹ýÀº ´ÙÂ÷»ó¼Ó°ú ºñ½ÁÇϸç, ¼±Á¶Å¬·¡½º1ÀÇ »ý¼ºÀÚ, ¼±Á¶Å¬·¡½º2ÀÇ »ý¼ºÀÚ... ÀÌ·± ¼ø¼­ÀÌ´Ù. # °¡»ó ¼±Á¶ Ŭ·¡½º C++¿¡¼­ÀÇ ´ÙÁß»ó¼ÓÀº ¿©·¯°¡Áö ¹®Á¦¸¦ ³»Æ÷ÇÏ°í ÀÖ´Ù. À§¿¡¼­ 2Â÷»ó¼Ó½Ã ÀÇ ¹®Á¦Á¡À» »ìÆìºÃÀ¸¸é ¾Ë°ÚÁö¸¸, °£Á¢ÀûÀ¸·Î °°Àº ¸â¹öµéÀÌ Áߺ¹ÀûÀ¸·Î »ó¼ÓµÉ ¼ö ÀÖ´Ù´Â »ç½ÇÀÌ´Ù. ÀÏ´Ü ´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ.. class class1 { int data1; }; class class2:public class1 { int data2; }; class class3:public class1 { int data3; }; class class4:public class2,public class3 { int data4; }; °è½Âµµ¸¦ ±×·Áº¸¸é, ¦£¦¡¦¡¦¡¦¤ ¦£¦¡¦¡¦©class2¦§¦¡¦¡¦¤ ¦£¦¡¦¡¦¡¦¡¦¤ ¦¢ ¦§¦¡¦¡¦¡¦© ¦§¦¡¦¡¦©class4 ¦¢ ¦£¦¡¦¡¦¡¦¤ ¦¢ ¦¢data1 ¦¢ ¦¢ ¦§¦¡¦¡¦¡¦¡¦© ¦¢class1¦§¦¡¦¡¦© ¦¢data2 ¦¢ ¦¢ ¦¢data1* ¦¢<- data1 2°³°¡ ¦§¦¡¦¡¦¡¦© ¦¢ ¦¦¦¡¦¡¦¡¦¥ ¦¢ ¦¢data1* ¦¢ Áߺ¹µÇ¾î ÀÖ´Ù. ¦¢data1 ¦¢ ¦¢ ¦£¦¡¦¡¦¡¦¤ ¦¢ ¦¢data2 ¦¢ ¦¦¦¡¦¡¦¡¦¥ ¦¦¦¡¦¡¦©class3¦§¦¡¦¡¦¥ ¦¢data3 ¦¢ ¦§¦¡¦¡¦¡¦© ¦¢data4 ¦¢ ¦¢data1 ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¥ ¦¢data3 ¦¢ ¦¦¦¡¦¡¦¡¦¥ À§ÀÇ ¿¹Á¦¿¡¼­ º¸´Ù½ÃÆÄ, °°Àº ¸â¹ö³ª ¸â¹öÇÔ¼ö°¡ Áߺ¹Á¤ÀÇ µÇ¹ö¸®´Â ¼ö°¡ ¹ß»ýÇÒ ¼ö°¡ ÀÖ´Ù. Áߺ¹Á¤ÀÇ µÇ¾îÀÖ´Â ¸â¹öµéÀÌ ¼­·Î Àǹ̰¡ ´Ù¸£´Ù¸é, ´Ù Áß»ó¼Ó½Ã¿¡ »ó´çÇÑ ¹®Á¦¸¦ ¾ß±â½ÃÅ°¹Ç·Î, ÀÌ ¶§´Â º¯¼ö¸íÀ» ¹Ù²ã¹ö·Á¾ß ÇÑ ´Ù. ( ±×·¯³ª ´ÙÇàÈ÷µµ ÀÌ·± °æ¿ì´Â ÇÁ·Î±×·¡¸Ó°¡ ¶î¶îÇÏÁö ¾ÊÀº ÀÌ»ó Áö±Ø È÷ µå¹° ¼ö ¹Û¿¡ ¾ø´Ù.) À§¿Í °°ÀÌ °ãÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ °¡»ó ¼±Á¶ Ŭ·¡½º°¡ ÇÊ¿äÇÏ°Ô µÈ ´Ù. °¡»ó ¼±Á¶ Ŭ·¡½º·Î ÁöÁ¤µÈ Ŭ·¡½º¸¦ »ó¼ÓÇÒ ¶§´Â, °ãÃÄÁø ¸â¹öÁß Çϳª ¸¸ »ó¼Ó½ÃÅ°°Ô µÈ´Ù. * ¿ë¹ý) ÈļÕŬ·¡½ºÀÇ Á¤Àǹ®¿¡¼­ ¼±Á¶Å¬·¡½º À̸§¾Õ¿¡ ¿¹¾à¾î virtualÀ» ºÙ¿©ÁØ ´Ù. À§ÀÇ ¿¹Á¦·Î º¸¸é, class class1 { int data1; }; class class2:virtual public class1 { int data2; }; class class3:virtual public class1 { int data3; }; class class4:public class2,public class3 { int data4; }; ¦£¦¡¦¡¦¡¦¤ ¦£¦¡¦¡¦©class2¦§¦¡¦¡¦¤ ¦£¦¡¦¡¦¡¦¡¦¤ ¦¢ ¦§¦¡¦¡¦¡¦© ¦§¦¡¦¡¦©class4 ¦¢ ¦£¦¡¦¡¦¡¦¤ ¦¢ ¦¢data1 ¦¢ ¦¢ ¦§¦¡¦¡¦¡¦¡¦© ¦¢class1¦§¦¡¦¡¦© ¦¢data2 ¦¢ ¦¢ ¦¢data1 ¦¢ ¦§¦¡¦¡¦¡¦© ¦¢ ¦¦¦¡¦¡¦¡¦¥ ¦¢ ¦¢data2 ¦¢ ¦¢data1 ¦¢ ¦¢ ¦£¦¡¦¡¦¡¦¤ ¦¢ ¦¢data3 ¦¢ ¦¦¦¡¦¡¦¡¦¥ ¦¦¦¡¦¡¦©class3¦§¦¡¦¡¦¥ ¦¢data4 ¦¢ ¦§¦¡¦¡¦¡¦© ¦¦¦¡¦¡¦¡¦¡¦¥ ¦¢data1 ¦¢ ¦¢data3 ¦¢ ¦¦¦¡¦¡¦¡¦¥ << Ãß»ó Ŭ·¡½º >> Ãß»óŬ·¡½º¶õ °´Ã¼¸¦ »ý¼ºÇÏ¿© ½ÇÁ¦·Î »ç¿ëÇÏ°Ô¿¡ ³Ê¹«³ª Ãß»óÀû(?)ÀΠŬ ·¡½º¸¦ ÁöĪÇÏ´Â ¾ÆÁÖ~ Ãß»óÀûÀÎ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ Ãß»óŬ·¡½º´Â »ó¼ÓÀ» À§ÇÑ ¸ñÀûÀ¸·Î ¾²ÀÌ°Ô µÈ´Ù. Ãß»óŬ·¡½º´Â ¼ø¼ö°¡»óÇÔ¼ö(pure virtual function)¸¦ ÃÖ¼ÒÇÑ 1°³ ÀÌ»ó °¡ Áö°Ô µÇ¸ç, °´Ã¼¸¦ ¸¸µå´Â °ÍÀÌ ºÒ°¡´ÉÇÏ´Ù. ¼ø¼ö°¡»óÇÔ¼ö´Â ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵȴÙ. virtual ¸®ÅÏÇü ÇÔ¼ö¸í() = 0; ex) virtual void ACCESS() = 0; Áï, ÇÔ¼öÀÇ º»Ã¼¸¦ ¾²Áö ¾Ê°í '= 0'À» ºÙ¿©ÁØ´Ù. * °¡»óÇÔ¼ö´Â Èļտ¡¼­ ÀçÁ¤ÀÇµÉ ¼ö ÀÖ´Ù´Â »ç½ÇÀ» ÁÖ¸ñÇÏÀÚ. * ¼±Á¶¿¡¼­ °¡»óÇÔ¼ö¸é Èļտ¡¼­ ¶ÇÇÑ °è¼Ó °¡»óÇÔ¼ö¶ó´Â °Íµµ ÀØÁö¸»ÀÚ. << Ŭ·¡½º »ó¼ÓÀÇ ½ÇÁ¦ >> ÀÌÁ¦ ¿Í¼­ ´ë´ÜÈ÷ ¾ÆÀÌ·¯´ÏÇÑ ÀÏÀÌÁö¸¸, ½ÇÁ¦·Î ¼±Á¶¸¦ ¸¸µç ÈÄ¿¡ »ó¼Ó½Ã ÄѼ­ ÈļÕÀ» ¸¸µé¾î³ª°¡´Â °Íº¸´Ù´Â, ÈļÕÀ» ¸¸µé¾î°¡¸é¼­ °øÅëºÎºÐÀ» »Ì¾Æ ³»¾î ¼±Á¶¸¦ ¸¸µé¾î°¡´Â °æ¿ì°¡ ´ëºÎºÐÀÎ °ÍÀ̶ó´Â ¾ÆÁÖ Àç¹Õ°íµµ ¾ÆÀÌ·¯´Ï ÇÑ »ç½ÇÀÌ ÀÖ´Ù. Áï, ab + bc = b(a+c) ÀÌ·¸°Ô ÀμöºÐÇصǴ ¿ø¸®¶û µ¿ÀÏÇÑ °ÍÀÌ´Ù. Áï, ÈļÕÀ» ¸¸µé¾Æº¸¸é¼­ ¼±Á¶°¡ ¸¸µé¾îÁö´Â ¼ÀÀÌ´Ù. óÀ½ºÎÅÍ ÈļÕÀ» ±â ȹÇÏ¿© ¼±Á¶¸¦ ¸¸µé¾î°¡´Â °æ¿ì´Â ´ë´ÜÈ÷ Èûµé°í µå¹® °æ¿ìÀÌ´Ù. . . PRESENTED by . * __ ____ ____. ____ ____* ____ the / |/ ___|/ ___|| ___|/ _*|/ __| registered / / | |___ |___ | _| \_*_ \\___ \ trademark of /_/|_|\____|\____||____*|____/|____/ MicroSoft Inc. -1995- . * * * << ¿¬»êÀÚ ¿À¹ö·Îµù (operator overloading) >> C++¿¡¼­´Â ¿¬»êÀÚ¸¦ ÀçÁ¤ÀÇ ÇÒ ¼ö ÀÖ´Ù. ÀÌ °ÍÀ» ¿¬»êÀÚ ¿À¹ö·ÎµùÀ̶ó°í ÇÑ´Ù. Âü°í·Î, C++¿¡¼­´Â ¿¬»êÀÚÁ¶Â÷ ÇÔ¼öÃë±ÞÀ» ¹Þ°Ô µÈ´Ù. ¿¬»êÀÚ ¿À¹ö ·Îµù¿¡ ÀÇÇØ ÀçÁ¤ÀÇµÈ ¿¬»êÀÚ¸¦ ¿¬»êÀÚ ÇÔ¼ö(operator function)À̶ó°í ÇÏ ¸ç,´Â ÁöÁ¤ÇØÁØ ÀμöÀÇ µ¥ÀÌÅÍÇü¿¡ »ç¿ëÇÏ°Ô µÇ¸é ¿À¹ö·ÎµùµÈ ¿¬»êÀÚ¿¡ ÀÇ ÇÑ ¿¬»êÀ» ÇàÇÏ°Ô µÈ´Ù. Çü½Ä) ¸®ÅÏ°ª operator ¿¬»êÀÚ(Àμö1, Àμö2,..) { ÇÔ¼öÀÇ º»Ã¼ } ex) class ACCESS {... int operator +() {...} ... }; // ³»ºÎÁ¤ÀÇ ACCESS PRM::operator *(ACCESS A) {...} // ¿ÜºÎÁ¤ÀÇ * ¿¬»êÀÚ ÇÔ¼ö ÀÛ¼ºÀÇ ±ÔÄ¢ 1. ´ÙÀ½ ¿¬»êÀÚµéÀº ¿À¹ö·ÎµùÇÒ ¼ö ¾ø´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢. :: ?: sizeof # ## .*¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Ŭ·¡½º¿¡ °ü°èµÈ ¿¬»êÀÚÀ̱⠶§¹®ÀÎ µí?? 2. ±âÁ¸¿¡ ÀÖ´ø ¿¬»êÀÚ¸¸À» ¿À¹ö·ÎµùÀ¸·Î ÀçÁ¤ÀÇÇÒ¼ö ÀÖ´Ù. int(), long()µî ij½ºÆ® ¿¬»êÀÚ ÇÔ¼öµµ ÀçÁ¤ÀÇ ÇÒ ¼ö ÀÖ´Ù´Â »ç½ÇÀ» ÁÖ ¸ñÇÏÀÚ. (Ŭ·¡½º -> ÀÏ¹Ý µ¥ÀÌÅÍ º¯È¯¿¡ À¯¿ë) 3. ¿¬»êÀÚÇÔ¼ö´Â Ŭ·¡½º³»ºÎ¿¡¼­ ¸â¹öÇÔ¼ö¿©¾ß ÇÑ´Ù. 4. ±âÁ¸¿¡ ´ÙÇ× ¿¬»êÀÚ¿´´ø°ÍÀº ´ÙÇ׿¬»êÀÚ·Î, ´ÜÇ×À̾ú´ø°Íµµ ´ÜÇ×À¸·Î ¸¸µé¾î¾ß ÇÑ´Ù. 5. ¿¬»êÀÚ ÇÔ¼ö°¡ ¸â¹öÇÔ¼öÀÏ ¶§´Â ÀÚ½ÅÀÌ ¼ÓÇÑ °´Ã¼±× ÀÚü¸¦ Àμö·Î Àü ´Þ¹Þ°Ô µÈ´Ù. ÀÌ Àμö´Â ÀúÀý·Î Àü´ÞÀÌ µÇ¹Ç·Î, »ý·«ÇØ¾ß µÈ´Ù. ÀÌ·¸°Ô ÀÚµ¿ÀûÀ¸·Î Àü´ÞµÇ´Â ù¹ø° ÀÎÀÚ´Â thisÆ÷ÀÎÅÍ¿¡ ÀÇÇÑ °ÍÀ̸ç, »ç¿ëÀÚ °¡ ÁöÁ¤ÇÏ´Â ÀÎÀÚ´Â 2¹ø° ÀÎÀÚ°¡ µÇ¹ö¸®´Â °ÍÀÌ´Ù. µû¶ó¼­ ÀÌ·± °æ¿ì ¿¡ ´ÜÇ׿¬»êÀÚ´Â voidÇü Àμö°¡ µÇ¸ç, ÀÌÇ׿¬»êÀÚ´Â Àμö°¡ 1°³°¡ µÈ´Ù . (thisÆ÷ÀÎÅÍ¿¡ ´ëÇؼ­´Â ´ÙÀ½¿¡ ÀÚ¼¼È÷ ³ª¿È~) 6. ¿¬»êÀÚ ÇÔ¼ö°¡ ¿ÜºÎ¿¡¼­ Á¤ÀÇµÈ friendÇÔ¼öÀÏ °æ¿ì´Â ÀÌ·¯ÇÑ this Æ÷ÀÎ ÅÍ°¡ Àû¿ëµÇÁö ¾Ê´Â´Ù. Áï, ÀÎÀÚ¸¦ »ý·«ÇÏ¸é ¾È µÈ´Ù. ÀÌ °æ¿ì ´ÜÇ× ¿¬ »êÀÚÀÇ Àμö´Â 1°³, ÀÌÇ×Àº 2°³°¡ µÇ´Â °ÍÀº ´ç¿¬ÇÑ ÀÏ.. 7. ´ÜÇ׿¬»êÀÚ¸¦ ÈÄÀ§¿¬»êÀÚ·Î ¸¸µé·Á¸é intÇü ÀÎÀÚ¸¦ Çϳª´õ °¡Áö´Âµ¥, ÀÌ intÇü ÀÎÀÚ´Â ´ÜÁö ÀüÀ§¿¬»çÀÚ¿Í ±¸º°ÇϱâÀ§ÇÑ ±âÈ£¿¡ Áö³ªÁö ¾ÊÀ¸ ¹Ç·Î ¿¬»êÀÚÇÔ¼ö ³»¿ëÁß¿¡¼­ ¾²ÀÌÁö ¾Ê´Â´Ù. ex) int operator ++(int) { // ÈÄÀ§¿¬»êÀÚ return p+=100; } 8. ¿¬»êÀÚÇÔ¼ö´Â µðÆúÆ®ÀÎÀÚ¸¦ °¡Áú ¼ö ¾ø´Ù. 9. º¯¼ö³¢¸®ÇÏ´Â ¿¬»êÀÚÀÏ °æ¿ì´Â Ŭ·¡½º³»ºÎ¿¡¼­ ¸â¹öÇÔ¼ö·Î Á¤ÀÇÇÏ´Â °Í ÀÌ ÁÁ°í, »ó¼ö°¡ µé¾î°¥ °¡´É¼ºÀÌ ÀÖ´Â ¿¬»êÀڴ Ŭ·¡½º ¿ÜºÎ¿¡¼­ fri end·Î Á¤ÀÇÇÑ ºñ¸â¹öÇÔ¼ö°¡ ÁÁ´Ù. 10. ¿À¹ö·ÎµùµÈ ¿¬»êÀÚ¿¡¼­µµ ¿¬»êÀÚ ¿ì¼±¼øÀ§´Â º¯ÇÏÁö ¾Ê´Â´Ù. 11. »ç¿ëÀÚ¿¡ ÀÇÇؼ­ Á¤ÀÇµÈ µ¥ÀÌÅÍÇü(Ŭ·¡½º)¸¸ ¿À¹ö·ÎµùÀÇ ±ÔÄ¢ÀÌ Àû¿ë µÈ´Ù. (»ý°¢Çغ¸¸é ´ç¿¬ÇÑ ¸») 12. Ŭ·¡½ºÀÇ Çüº¯È¯ ij½ºÆ® ¿¬»êÀÚÇÔ¼ö¸¦ ¼±¾ðÇÏ°í Á¤ÀÇÇؼ­ ¿À¹ö·Îµù ½Ã ų ¼öµµ ÀÖ´Ù. (±×·¯³ª ¹«Áö ±ÍÂúÀ½) ex) ¿¬»êÀÚ ¿À¹ö·Îµù ´ÙÀ½Àº º¹¼Ò¼öÀÇ ¿¬»ê¿¡ ´ëÇؼ­ +,-¿¬»êÀÚ¸¦ ¿À¹ö·Îµù½ÃŲ °ÍÀÌ´Ù. #include class Complex { private: double real; double image; public: Complex() {} // »ý¼ºÀÚ Complex(double r,double i) { // Áߺ¹Á¤ÀÇ real=r; image=i; } Complex operator +(Complex C) { // ³»ºÎÁ¤ÀÇ Complex T; T.real = real+C.real; T.image = image+C.image; return (T); } Complex operator -(Complex C); void OutComplex() { cout << real << '+' << image << 'i' << endl; } }; Complex Complex::operator -(Complex C) // ¿ÜºÎÁ¤ÀÇ { Complex T; T.real = real-C.real; T.image = image-C.image; return (T); } void main() { Complex COM1(1.1,2.2); Complex COM2(3.3,4.4); Complex COM3,COM4; COM3=COM1+COM2; COM4=COM2-COM1; cout << "COM1 + COM2 = ";COM3.OutComplex(); cout << "COM2 - COM1 = ";COM4.OutComplex(); } << Á¤Àû µ¥ÀÌÅÍ ¸â¹ö >> Á¤Àû µ¥ÀÌÅÍ ¸â¹ö¶õ Ŭ·¡½ºÀÇ ¹Ù±ù¿¡ À§Ä¡ÇÏÁö¸¸ Ŭ·¡½ºÀÇ ¸â¹ö°¡ µÇ¸ç ±× Ŭ·¡½º·ÎºÎÅÍ »ý¼ºµÇ´Â ¸ðµç °´Ã¼°¡ °øÀ¯ÇÏ´Â ¸â¹ö°¡ µÈ´Ù. Áï, °´Ã¼¿¡¼­¸¸ Åë¿ëµÇ´Â Àü¿ªº¯¼ö¶ó°í »ý°¢ÇÏ¸é µÈ´Ù. Àü¿ªº¯¼ö°¡ ÀÖ±ä ÇÏÁö¸¸ Ŭ·¡½ºÀÇ ÀºÆó¸¦ À§ÇØ ¸¸µé¾îÁø °³³äÀÌ´Ù. Çü½Ä) class Ŭ·¡½º¸í { : static ÀÚ·áÇü º¯¼ö¸í; : } : ÀÚ·áÇü Ŭ·¡½º¸í::º¯¼ö¸í (= ÃʱⰪ); static¸â¹ö´Â Ŭ·¡½º ¿ÜºÎ, Áï Àü¿ª¿µ¿ª¿¡¼­ Á¤ÀǵǾî¾ß ÇÑ´Ù. ÃʱⰪÀÌ »ý·«µÇ¸é 0À¸·Î ÃʱâÈ­°¡ µÈ´Ù. ACCESS¶ó´Â Ŭ·¡½º°¡ Á¤Àû¸â¹ö(static¸â¹ö)ÀÎ prmÀ» °¡Áö°í ÀÖ°í, ÀÌ Å¬·¡ ½ºÀÇ °´Ã¼ A,B,C°¡ ÀÖ´Ù°í ÇÏÀÚ. A,B,CÁß ¾î´À °÷ÀÌ¶óµµ prm°ªÀ» º¯°æ½ÃÅ° ¸é Àüü A,B,C¿¡¼­ ÀνÄÇÏ´Â prmÀÇ °ªÀº ¸ðµÎ ¶È°°ÀÌ º¯°æµÈ °ªÀ» ÀνÄÇÏ´Â °ÍÀÌ´Ù. << Á¤Àû ¸â¹ö ÇÔ¼ö >> static¸â¹ö°¡ ÀÖµíÀÌ, staticÇü ÇÔ¼öµµ ÀÖ´Ù. staticÇü ¸â¹öÇÔ¼ö´Â °´Ã¼¾ø À̵µ È£ÃâÀÌ °¡´ÉÇϸç, ÀÌ·¯ÇÑ °æ¿ì¿¡´Â ´ÙÀ½°ú °°Àº È£Ãâ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ Á¤Àû ¸â¹ö ÇÔ¼ö´Â ÁÖ·Î Á¤Àû ¸â¹ö¿¡ ´ëÇؼ­ ÀÛ¾÷À» ÇàÇÏ°Ô µÈ´Ù. Çü½Ä) Ŭ·¡½º¸í::Á¤Àû¸â¹öÇÔ¼ö¸í(); ÀÌ Á¤Àû¸â¹öÇÔ¼ö´Â ƯÁ¤ÇÑ °´Ã¼¿¡¼­ È£ÃâµÇ´Â ÇÔ¼ö°¡ ¾Æ´Ï¹Ç·Î thisÆ÷ÀÎÅÍ °¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. << this Æ÷ÀÎÅÍ >> thisÆ÷ÀÎÅͶõ ¸â¹öÇÔ¼ö ³»¿¡¼­ È£Ãâ °´Ã¼ÀÇ ½ÃÀÛ¹øÁö¸¦ ³ªÅ¸³»´Â Æ÷ÀÎÅÍÀÌ ¸ç, °´Ã¼°¡ ¸â¹öÇÔ¼ö¸¦ »ç¿ëÇÒ ¶§, ÀúÀý·Î ±× °´Ã¼ÀÇ ½ÃÀÛ¹øÁö°¡ this¿¡ ÇÒ ´çµÇ°Ô µÇ¾îÀÖ´Ù. ÄÄÆÄÀÏ·¯°¡ ÀúÀý·Î ¸¸µé¾î¼­ »ç¿ëÇÏ´Â °ªÀ̹ǷΠÇ×»ó Á¸ ÀçÇÏ´Â °ªÀÌ´Ù. ¸â¹öÇÔ¼ö°¡ È£ÃâµÇ¾îÁú °æ¿ì¿¡´Â ¹¬½ÃÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾îÁö´Â °ÍÀ̳ª ´Ù¸§¾ø´Ù. Ŭ·¡½º¸í * const this; # thisÆ÷ÀÎÅÍÀÇ Æ¯Â¡ 1. ÇÑ °´Ã¼°¡ ¸â¹öÇÔ¼ö¸¦ È£ÃâÇÒ¶§´Â thisÆ÷ÀÎÅÍ°¡ ÀÚµ¿ÀûÀ¸·Î ¼³Á¤µÈ´Ù. 2. ÀÏ´Ü, thisÆ÷ÀÎÅÍ°¡ ¼³Á¤µÇ¸é, ÀÌÁ¦ ¸â¹öÇÔ¼ö´Â thisÆ÷ÀÎÅÍ°¡ °¡¸®Å°°í ÀÖ´Â °´Ã¼ÀÇ ¸â¹öµéÀ» ÂüÁ¶ÇÏ¿© ±â´ÉÀ» ¹ßÈÖÇÑ´Ù. 3. this Æ÷ÀÎÅÍ´Â autoÇü º¯¼öÀÌ´Ù. 4. ÀÌ thisÆ÷ÀÎÅÍ´Â ¸â¹öÇÔ¼ö ³»¿¡¼­ ´Ù¸¥ ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ È£ÃâÇÑ °´Ã¼ ÀÚ ½ÅÀ» Àμö·Î ³Ñ°ÜÁְųª °´Ã¼ ÀÚ½ÅÀ» ¸®ÅÏ°ªÀ¸·Î »ç¿ëÇÒ ¶§ Á¾Á¾ »ç¿ëµÈ´Ù. ex) #include struct ACCESS { int x,y; int hap() { return(x+y); } }; // return ((this->x) + (this->y)); ÀÌ·¸°Ô ½áµµ °¡´É! void main() { ACCESS A,B,C; A.x=10; A.y=20; B.x=30; B.y=40; C.x=50; C.y=60; cout << A.hap() << ' ' << B.hap() << ' ' << C.hap() << endl; } ¿©±â¼­ A.hap(), B.hap(), C.hap()ÇÔ¼öµéÀÌ È£ÃâµÇ¾îÁú ¶§, A.xÀÎÁö B.xÀÎ Áö C.xÀÎÁö ¾î´À °ªÀ» Àμö·Î »ç¿ëÇϴ°¡´Â thisÆ÷ÀÎÅ͸¦ ÂüÁ¶ÇÑ °á°úÀÌ´Ù. (±×·¸Áö ¾ÊÀ¸¸é ¾î¶»°Ô ¾Ë¾Æº¸°Ú´Â°¡??) hapÀ̶õ ÇÔ¼öÀÇ returnºÎºÐÀº À§¿Í °°ÀÌ ¹Ù²Ù¾î ½áµµ °¡´ÉÇÏ´Ù.. thisÀÇ ¼º°ÝÀ» »ý°¢Çغ»´Ù¸é ´ç¿¬ÇÑ ¾ê±â... << ÅÛÇø´(template) >> C++¿¡¼­´Â ÇÔ¼öÀÇ ´ÙÇü¼ºÀÇ ¿ø¸®¿¡ µû¶ó °°Àº À̸§À» °¡Á³¾îµµ Àμö°¡ ´Ù ¸£¸é´Ù¸¥ ÇÔ¼ö¸¦ È£ÃâÇÏ°Ô µÇ¾îÀÖ´Ù. ÀÏ´Ü ´ÙÀ½ ¿¹Á¦¸¦ »ìÆ캸ÀÚ. ex) ACCESS(int x, int y) { return(x+y); } ACCESS(long x, long y) { return(x+y); } ACCESS(float x, float y) { return(x+y); } »ç¿ëÀÚ°¡ ½Ç¸Å°³º¯¼ö¸¦ ¾î¶² ÇüÀ¸·Î Àü´ÞÇØÁִ°¡¿¡ µû¶ó¼­ ¹ÙÀεùµÇ´Â ÇÔ ¼ö°¡ °áÁ¤µÇ´Â °ÍÀÌ´Ù. ÀÌ·± ¹æ¹ýÀº »ó´çÈ÷ ¿©·¯°¡Áö ³¶ºñ¸¦ ÃÊ·¡ÇÑ´Ù. ÀÌ ·± °æ¿ì ÅÛÇø´À» ÀÌ¿ëÇÑ´Ù. ACCESS(T x,T y) { return(x+y); } T´Â »óȲ¿¡ µû¶ó¼­ µ¥ÀÌÅÍÇü±îÁö °áÁ¤ÇØÁִ Ʋ, Áï ÅÛÇø´(template)ÀÌ ´Ù.. ÅÛÇø´¿¡´Â ÇÔ¼ö ÅÛÇø´°ú Ŭ·¡½º ÅÛÇø´ÀÌ ÀÖ´Ù. * ÇÔ¼ö ÅÛÇø´ ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇϸé Á¤ÀǵǾîÁø ÇÔ¼ö´Â ÅÛÇø´ ÇÔ¼ö°¡ µÈ´Ù. Çü½Ä) template<ÅÛÇø´Àμö1, ÅÛÇø´Àμö2..> ÇÔ¼öÀÇ Á¤ÀÇ ex) template void ACCESS(T arg) {...} ¨ç ÅÛÇø´ Àμö ¸®½ºÆ®´Â ÀÎÀÚÇüÀ» ´ë½ÅÇÒ º¯¼öµéÀ» ÀǹÌÇϸç, À§ÀÇ ¿¹¿¡ ¼­ class´Â ´ÜÁö ÅÛÇø´ÀÎÀÚÀÓÀ» ³ªÅ¸³»´Â ±âÈ£ÀÌ°í Ŭ·¡½º¸¦ ³ªÅ¸³»´Â °Í°ú´Â ¼º°ÝÀÌ ´Ù¸£´Ù. ¨è inline, static, externµîÀÇ Å°¿öµåµéÀº ÇÔ¼ö¸í ¹Ù·Î¾Õ¿¡ ±â¼úÇÑ´Ù. ¨é ÅÛÇø´ Àμö¸®½ºÆ®¿¡ ¼±¾ðµÈ ÀÎÀÚµéÀº ÃÖ¼ÒÇÑ 1¹ø ÀÌ»ó ¾²¿©¾ß ÇÑ´Ù. ¨ê Àμö ¸®½ºÆ®¿¡´Â ¼ö½Ä, ÇÔ¼öµîÀÌ ¿Ã ¼öµµ ÀÖ´Ù. ¨ë ÅÛÇø´ ÇÔ¼ö¿Í ÀϹÝÇÔ¼ö°¡ Áߺ¹µÇ¾úÀ» °æ¿ì¿¡´Â ÀϹÝÇÔ¼ö°¡ ¿ì¼±ÀûÀ¸·Î È£ÃâµÇ¾îÁø´Ù. ¨ì ÅÛÇø´ÇÔ¼ö³ª ÀϹÝÇÔ¼ö·Îµµ »ý¼ºµÉ ¼ö ¾ø´Â ÇÔ¼ö°¡ È£ÃâµÇ¸é ¿¡·¯°¡ ¹ß »ýÇÑ´Ù. ÀÌ·¯ÇÑ °æ¿ì´Â ÀÌ ¶§ÀÇ ÇÔ¼ö ÇÁ·ÎÅäŸÀÔ´ÙÀ½À» ¼±¾ðÇÏ¿© ÁÖ¸é µÈ´Ù. (ÅÛÇø´ ÇÔ¼öÀÇ È®Àå) template T ACCESS(T a,T b) { ... } ACCESS(1,2.3); // ¿¡·¯ template T ACCESS(T x,T y) { ... } double ACCESS(double, double); // ÅÛÇø´ È®Àå ACCESS(3,3.14); // ÀÚµ¿ Çüº¯È¯¿¡ ÀÇÇØ ACCESS(double(3), 3.14)·Î ÀνĵǾîÁø´Ù. ¨í ÅÛÇø´ÇÔ¼öµµ ´ÙÇü¼ºÀÌ Àû¿ëµÈ´Ù. template T ACCESS(T,T); template T ACCESS(T,T,int); ex) #include template T ACCESS(T x,T y) { return(x>y ? x:y); } template F PRM(F x,E y) { return (x+y); } void main() { printf("%d\n",sub(3,4)); printf("%g\n",sub(5.5,6.8)); printf("%d\n",func(4,5.4)); printf("%g\n",func(3.3,7)); } * Ŭ·¡½º ÅÛÇø´ ÅÛÇø´ ÇÔ¼ö¿Í ºñ½ÁÇÑ ³»¿ëÀÌ´Ù. Ŭ·¡½º ¸â¹öµéÀ» ÅÛÇø´À¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ´Ù. Çü½Ä) template<ÅÛÇø´Àμö1, ÅÛÇø´Àμö2..> Ŭ·¡½ºÀÇ Á¤ÀÇ ex) template class ACCESS { protected: int x, y; T z; public: ACCESS(int a, int b, T c) { x = a; y = b; z = c; } void OUT(void) { gotoxy(x,y); cout << z; } } ; : ACCESS var1(5,5,10); ACCESS var2(10,10,'A'); ACCESS var3(15,20,3.14); : ¨ç Àμö¸®½ºÆ®ÀÇ ÀμöÁß¿¡´Â »ç¿ëµÇÁö ¾ÊÀº °ÍÀÌ Á¸ÀçÇصµ »ó°ü¾ø´Ù. ¨è À§ÀÇ º¸±â¿Í °°ÀÌ < >»çÀÌ¿¡ »ç¿ëÀÚ°¡ »ç¿ëÇÏ°íÀÚ ÇÏ´Â ÀÚ·áÇüÀ» ÁöÁ¤ ÇØÁÖ¾î¾ß ÇÑ´Ù. ÇØÁÖ¾î¾ß ÇÑ´Ù. (¨ç,¨è¹ø ³»¿ëÀº ÇÔ¼ö ÅÛÇø´°úÀÇ Â÷ÀÌÁ¡µéÀÌ´Ù. ´ë´ÜÈ÷ ÁÖÀÇ!!) ¨é Ŭ·¡½º ÅÛÇø´¿¡¼­µµ static¸â¹ö³ª ÇÔ¼öÀÇ ¿ÜºÎÁ¤ÀǸ¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡´Â ´ÙÀ½°ú °°ÀÌ.. template class ACCESS { static int s; int x, y; T z; }; template int ACCESS::s=0; // static¸â¹öÀÇ Á¤ÀÇ template ACCESS::ACCESS(int a, int b, T c) { x = a; y = b; z = c; } // À§ÀÇ ¿¹¿¡¼­ »ý¼ºÀÚ¸¦ ¿ÜºÎÁ¤ÀÇ·Î ÇÑ °Í . . PRESENTED by . * __ ____ ____. ____ ____* ____ the / |/ ___|/ ___|| ___|/ _*|/ __| registered / / | |___ |___ | _| \_*_ \\___ \ trademark of /_/|_|\____|\____||____*|____/|____/ MicroSoft Inc. -1995- . * * * Ãâ·ÂÀÌ ³¡³µ½À´Ï´Ù. [Enter]¸¦ ´©¸£½Ê½Ã¿À.