¿À¹ö·Îµù(¸Þ¼µå Áߺ¹Á¤ÀÇ)¿¡ °üÇØ¼´Â ¾Õ¿¡¼ ¼³¸íÀ» Çß½À´Ï´Ù. ¿À¹ö·Îµù(Overloading)À̶õ °°Àº À̸§À¸·Î ¿©·¯ °³ÀÇ ¸Þ¼µå¸¦ »ç¿ëÇÏ´Â °ÍÀ̾úÁÒ. ±×¸®°í ¾Õ Àý¿¡¼´Â ¸Þ¼µå ¿À¹ö·ÎµùÀÔ´Ï´Ù. ±×·±µ¥ À̹ø¿¡´Â ¿¬»êÀÚ ¿À¹ö·Îµù(Operator Overloading)ÀÔ´Ï´Ù. ¸» ±×´ë·Î ¿¬»êÀÚ¸¦ Áߺ¹Çؼ Á¤ÀÇÇÏ´Â °ÍÀÔ´Ï´Ù. ÀϹÝÀûÀÎ ¿¬»êÀÚ¸¦ »ý°¢ÇÏ¸é ´õÇϱ⠻©±â µîÀÇ °ª¿¡ ´ëÇÑ ¿¬»êÀ» »ý°¢ÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÔ´Ï´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ ¿¬»êÀÚ¸¦ °´Ã¼µé »çÀÌÀÇ ¿¬»êÀ¸·Î ÇÑ Â÷¿ø ³ô¿© ÁÖ´Â °ÍÀÌ ¿¬»êÀÚ ¿À¹ö·Îµù(Operator Overloading)ÀÔ´Ï´Ù.
¼ö ¿¬»êÀº ´Ü¼øÇÑ °è»êÀÌÁö¸¸ °´Ã¼µé³¢¸®ÀÇ ¿¬»êÀº ´õ º¹ÀâÇÑ ÀýÂ÷¸¦ °ÅÃÄ¾ß Çϱ⠶§¹®¿¡ ÀÌ·¯ÇÑ ¿¬»êÀÇ ÀýÂ÷¸¦ ÇÁ·Î±×·¥ ÇÑ´Ù°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.
|
¢Ã ¿¬»êÀÚ ¿À¹ö·Îµù(Operator Overloading) |
|
q ¿¬»êÀÚ¸¦ Áߺ¹ Á¤ÀÇÇÏ´Â °Í |
¿¬»êÀÚ ¿À¹ö·ÎµùÀº ÀÏ¹Ý ¸Þ¼µåÀÇ ¿À¹ö·Îµù°ú Â÷ÀÌÁ¡Àº º°·Î ¾ø½À´Ï´Ù. ´ÜÁö ¸Þ¼µå°¡ ¾Æ´Ñ ¿¬»êÀÚ ÀÚü¸¦ ¿À¹ö·Îµù ÇÏ´Â °ÍÀ¸·Î »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. Áï, ¸Þ¼µå À̸§´ë½Å¿¡ operator + °¡ »ç¿ëµÇ¾ú´Ù°í »ý°¢ÇÏ½Ã¸é ÆíÇϰڱº¿ä.
¿¹Á¦¿¡¼ + ¿¬»êÀÚ¸¦ Á¤ÀÇÇÏ¿´±â ¶§¹®¿¡ + ¿¬»êÀÚ¸¦ ¾Ë¸ÂÀº ¸Å°³º¯¼ö¿Í °°ÀÌ »ç¿ëÇÏ¸é ¿¬»êÀÌ µÇ´Â °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ ±âº» µ¥ÀÌÅÍŸÀÔ°ú ±âº» µ¥ÀÌÅÍŸÀÔÀÇ +´Â ¿À¹ö·Îµù¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¸øÇÕ´Ï´Ù.
ÀÌ ¿¬»êÀÚ ¿À¹ö·ÎµùÀº ¸·°ÇÑ ÈûÀ» ¹ßÈÖÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ±×¿¡ ¹ÝÇØ¼ ´ÜÁ¡µµ ÀÖ´Â °ÍÀÌ »ç½ÇÀÔ´Ï´Ù. ±×·³ ¿¹Á¦¸¦ º¸¸é¼ »ç¿ë¹ý°ú ÀåÁ¡, ±×¸®°í ´ÜÁ¡¿¡ ´ëÇØ¼µµ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
|
OperOverloadTest.cs |
¿¬»êÀÚ ¿À¹ö·ÎµùÀ» Å×½ºÆ®ÇÏ´Â ¿¹Á¦ |
|
using System; class OperOverloadTest { public int a = 0; public int b = 0; public OperOverloadTest(int a, int b){ this.a = a; this.b = b; } public static OperOverloadTest operator +(OperOverloadTest oot1, OperOverloadTest oot2){ int resultA = oot1.a + oot2.a; int resultB = oot1.b + oot2.b; OperOverloadTest result = new OperOverloadTest(resultA, resultB); return result; } };//class class OperOverloadTestMain { public static void Main() { OperOverloadTest oot1 = new OperOverloadTest(3, 5); OperOverloadTest oot2 = new OperOverloadTest(7, 16); OperOverloadTest result = oot1+oot2; Console.WriteLine("a°ªÀÇ ÇÕÀº "+result.a+"ÀÔ´Ï´Ù."); Console.WriteLine("b°ªÀÇ ÇÕÀº "+result.b+"ÀÔ´Ï´Ù."); }//Main };//class | |
|
C:\C#Example\04>csc OperOverloadTest.cs C:\C#Example\04>OperOverloadTest a°ªÀÇ ÇÕÀº 10ÀÔ´Ï´Ù. b°ªÀÇ ÇÕÀº 21ÀÔ´Ï´Ù. | |
¿¹Á¦¸¦ Àß º¸¸é ¾î·ÆÁö´Â ¾Ê½À´Ï´Ù. °£´ÜÇÑ ¿¹Á¦¶ó ±×·²Áöµµ ¸ð¸£°Ú½À´Ï´Ù¸¸ Àû¿ëÇÏ´Â ¹ýÀº »õ·Î¿î ¸Þ¼µå¸¦ Á¤ÀÇÇÑ´Ù´Â ±âºÐÀ» °®°í »ç¿ëÇÏ¸é µË´Ï´Ù. ¾ÕÀÇ ¿¹Á¦µµ + ¿¬»êÀÚ¸¦ Áߺ¹ Á¤ÀÇÇÏ¿´Áö¸¸ À̰ÍÀÌ ¸¶À½¿¡ µéÁö ¾ÊÀ¸½Ã¸é »õ·Î¿î ¸Þ¼µå¸¦ ¸¸µé¾î¼ »ç¿ëÇØµµ µË´Ï´Ù.
|
´ÜÇ× ¿¬»êÀÚ ¿À¹ö·Îµù |
|
public static return_type operator op(¸Å°³º¯¼ö_ŸÀÔ ¸Å°³º¯¼ö){. ¿¬»ê ³»¿ë } |
|
ÀÌÇ× ¿¬»êÀÚ ¿À¹ö·Îµù |
|
public static return_type operator op(¸Å°³º¯¼ö_ŸÀÔ ¸Å°³º¯¼ö, ¸Å°³º¯¼ö_ŸÀÔ ¸Å°³º¯¼ö){ ¿¬»ê ³»¿ë } |
¿¬»êÀÚ ¿À¹ö·ÎµùÀº À§ÀÇ Çü½Ä¿¡ ¸ÂÃß¾î¼ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. return-typeÀº ¹ÝȯÇüÀ» °¡¸®Å°°í, op´Â »õ·Ó°Ô Á¤ÀÇµÉ ¿¬»êÀÚ¸¦ ¸»ÇÕ´Ï´Ù. ¿¹Á¦¿¡¼ return-typeÀº OperOverloadTest À̰í, op´Â +¿´½À´Ï´Ù. ±×·¡¼ operator+ ÀÚü¸¦ ¸Þ¼µå À̸§À¸·Î º¸½Ã¸é ¸Þ¼µå¿Í º° ´Ù¸¦ °ÍÀÌ ÀÖ½À´Ï´Ù. ´ÜÁö ¿¬»êÀÌ ÀÌ·ç¾îÁú ¶§ÀÇ ¸Å°³º¯¼ö´Â + ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¶§ + ¿¬»êÀÚÀÇ ¿ÞÂʰú ¿À¸¥ÂÊ¿¡ ÀÖ´Â °ÍÀÌ ¸Å°³º¯¼ö°¡ µÈ´Ù´Â °Í¿¡¸¸ ÁÖÀÇ ÇÏ½Ã¸é µË´Ï´Ù. ¿¬»êÀÚ ¿À¹ö·Îµù¿¡ »ç¿ëµÈ ¸Þ¼µåÀÇ ¼±¾ðºÎ¸¦ ´Ù½Ã Çѹø È®ÀÎ ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.
n public static OperOverloadTest operator+(OperOverloadTest oot1, OperOverloadTest oot2)
|
¢Ã ¿¬»êÀÚ ¿À¹ö·Îµù(Overloading)¿¡¼ ÁÖÀÇ ÇØ¾ß ÇÏ´Â »ç¿ë |
|
q ¹«Á¶°Ç public q ¹«Á¶°Ç static q ¹ÝȯÇüÀº ¸¶À½´ë·Î |
ÀÌ·¸°Ô ¿À¹ö·Îµù µÈ ¿¬»êÀÚ ¿À¹ö·Îµù ¸Þ¼µå´Â ´ÙÀ½°ú °°Àº ±¸¹®¿¡¼ È£Ã⠵ǾîÁ®¼ »ç¿ëµË´Ï´Ù.
n OperOverloadTest result = oot1+oot2;
¿¬»êÀÚ ¿À¹ö·ÎµùÀÇ °æ¿ì ´ÜÇ× ¿¬»êÀÚÀÎ °æ¿ì¿Í ÀÌÇ× ¿¬»êÀÚÀÎ °æ¿ì, 3Ç× ¿¬»êÀÚÀÎ °æ¿ì¸¦ ±¸º°ÇØ¾ß ÇÕ´Ï´Ù. ¶Ç ¸ðµç ¿¬»êÀÚ°¡ ¿À¹ö·Îµù µÇ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ±×·³ ¿À¹ö·ÎµùÀÌ °¡´ÉÇÑ ¿¬»êÀÚ¸¦ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
|
¿¬»êÀÚ |
¿À¹ö·Îµù °¡´É ¿©ºÎ |
|
+, -, !, ~, ++, true, false |
´ÜÇ× ¿¬»êÀÚ´Â ¿À¹ö·Îµù °¡´É |
|
+, -, *, /, %, &, |, <<, >>, ^ |
ÀÌÁø ¿¬»êÀÚ´Â ¿À¹ö·Îµù °¡´É |
|
ºñ±³ ¿¬»êÀÚ´Â ¿À¹ö·Îµù °¡´É ´Ü, ÇϳªÀÇ ¿¬»êÀÚ¸¦ ¿À¹ö·Îµù Çϸé ¦ÀÌ µÇ´Â ¿¬»êÀÚµµ ¿À¹ö·Îµù ÇØ¾ß ÇÔ |
¿À¹ö·ÎµùÀÌ ºÒ°¡´ÉÇÑ ¿¬»êÀÚ´Â À§ÀÇ °ÍÀ» Á¦¿ÜÇÏ¸é µÇ°ÚÁö¿ä. ±×·¡µµ Çѹø »ý°¢³ª´Â ´ë·Î Á¤¸®Çغ¼±î¿ä?
|
¿¬»êÀÚ ¿À¹ö·ÎµùÀÌ ºÒ°¡´ÉÇÑ ¿¬»êÀÚ |
|
? . = is new sizeof typeof || [] () && -> += -= µîµî ? : |
¿¬»êÀÚ ¿À¹ö·ÎµùÀº Àß »ç¿ëÇÏ¸é ¾öû³ ÈûÀ» ¹ßÈÖÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ¿¬»êÀÚ¸¦ ¾û¶×ÇÏ°Ô Á¤ÀÇÇØ ³õ°í »ç¿ëÇÏ¸é ´Ù¸¥ »ç¿ëÀÚµéÀÌ È¥¶õÀ» °¡Á®¿Ã ¼ö ÀÖÀ¸¹Ç·Î Àß »ý°¢ÇÏ¿© »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦4°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |