[C++]2ºÎ°­ÁÂ(48)<--const ¸â¹ö




********************************************************
********************************************************
5-2 const ¸â¹ö


const¶ó´Â Å°¿öµå´Â »ó¼ö¸¦ ÀǹÌÇÑ´Ù. C++¿¡¼­ const ¸â¹ö ÇÔ¼ö¶õ °´Ã¼ÀÇ ³»
¿ëÀ» º¯°æ½ÃÅ°Áö ¾Ê´Â ¸â¹ö ÇÔ¼ö¸¦ ¸»ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ Å¬·¡½º°¡ ÀÖ´Ù
°í ÇÏÀÚ.

class CON {
public:
 int dataA;
 int dataB;
 CON(int a,int b)
 {
   dataA=a;
   dataB=b;
 }
 void setA(int a)
 {
   dataA=a;
 }
 void setB(int b)
 {
   dataB=b;
 }
 void outdata()
 {
   cout << "dataA = " << dataA << endl;
   cout << "dataB = " << dataB << endl;
 }
};

ÀÌ Å¬·¡½º¿¡ ¼ÓÇÑ ¸â¹ö ÇÔ¼ö Áß¿¡ outdata ¸â¹ö ÇÔ¼ö´Â µ¥ÀÌÅÍ ¸â¹öÀÇ ³»¿ëÀ»
º¯°æ½ÃÅ°Áö ¾Ê´Â´Ù´Â °ÍÀÌ º¸ÀåµÇ¸ç const ¸â¹ö ÇÔ¼ö·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¸â¹ö
ÇÔ¼ö¸¦ const ¼Ó¼ºÀ¸·Î ÁöÁ¤Çϱâ À§Çؼ­´Â ÇÔ¼ö Á¤Àǹ®ÀÇ Àμö ¸®½ºÆ® µÚ¿¡ co
nst Å°¿öµå¸¦ µ¡ºÙ¿© ÁÖ¸é µÈ´Ù.


void outdata() const
{
cout << "dataA = " << dataA << endl;
cout << "dataB = " << dataB << endl;
}

¸¸¾à °´Ã¼ÀÇ ³»¿ëÀ» º¯°æ½ÃÅ°´Â setA³ª setB ¸â¹ö ÇÔ¼ö¸¦ const·Î ¼±¾ðÇÏ·Á°í
Çϸé ÄÄÆÄÀÏ·¯ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.

Cannot modify a const object


********************************************************
********************************************************
5-3 this Æ÷ÀÎÅÍ


this Æ÷ÀÎÅͶõ ¸â¹ö ÇÔ¼ö³»¿¡¼­ È£Ãâ °´Ã¼ÀÇ ½ÃÀÛ¹øÁö¸¦ ³ªÅ¸³»´Â Æ÷ÀÎÅÍ°ªÀÌ
¸ç C++ÀÌ Á÷Á¢ ¸¸µé¾î¼­ »ç¿ëÇÏ´Â °ªÀ̹ǷΠ»ç¿ëÀÚ°¡ º°µµ·Î ¼±¾ðÀ» ÇÏÁö ¾Ê¾Æ
µµ Ç×»ó Á¸ÀçÇÑ´Ù. °´Ã¼¿¡¼­ ¸â¹ö ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ÄÄÆÄÀÏ·¯´Â È£ÃâÇÑ °´Ã¼ÀÇ
¹øÁö¸¦ this¿¡ ´ëÀÔÇÏ¿© ÁÖ¸ç ¸â¹ö ÇÔ¼ö ³»¿¡¼­ µ¥ÀÌÅÍ ¸â¹ö¸¦ ÂüÁ¶Çϰųª ´Ù
¸¥ ¸â¹ö ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ¹¬½ÃÀûÀ¸·Î this Æ÷ÀÎÅ͸¦ »ç¿ëÇÑ´Ù.
»ç¿ëÀÚ°¡ Á÷Á¢ this Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿©µµ µÇÁö¸¸ ÄÄÆÄÀÏ·¯°¡ ÀÚµ¿À¸·Î this
Æ÷ÀÎÅ͸¦ »ç¿ëÇØÁֱ⠶§¹®¿¡ »ý·«ÇÏ´Â °æ¿ì°¡ ¸¹´Ù. ´ÙÀ½ µÎ °æ¿ì´Â ¶È°°Àº µ¿
ÀÛÀ» ÇÑ´Ù.

class classA {
private:
 int dataA;
public:
 classA(int a)
 {
    this->dataA=a;
       .
       .
class classA {
private:
 int dataA;
public:
 classA(int a)
 {
    dataA=a;
       .
       .

classAÀÇ ¸â¹ö ÇÔ¼öÀÎ »ý¼ºÀÚ¿¡¼­ µ¥ÀÌÅÍ ¸â¹öÀÎ dataA¸¦ ÂüÁ¶ÇÒ ¶§ ÀÌ ¸â¹ö
ÇÔ¼ö¸¦ È£ÃâÇÑ °´Ã¼ÀÇ dataA ¸â¹ö¸¦ ÂüÁ¶ÇØÁֹǷΠthis´Â À־ µÇ°í ¾ø¾îµµ
µÈ´Ù. ¸â¹ö ÇÔ¼ö°¡ È£ÃâµÉ ¶§ ¹¬½ÃÀûÀ¸·Î class * const this°¡ ¼±¾ðµÈ´Ù. thi
s Æ÷ÀÎÅÍ´Â ÄÄÆÄÀÏ·¯°¡ »ç¿ëÀ» Ç쵂 »ç¿ëÀÚ°¡ Á÷Á¢ »ç¿ëÀ» ÇØ¾ß ÇÒ °æ¿ìµµ ÀÖ
´Ù. ¸â¹ö ÇÔ¼ö³»¿¡¼­ ´Ù¸¥ ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ È£Ãâ °´Ã¼ ÀÚü¸¦ Àμö·Î ³Ñ°Ü ÁØ
´Ù°Å³ª È£Ãâ¿øÀ¸·Î °´Ã¼¸¦ ¸®ÅÏÇÒ ¶§ÀÌ´Ù. ¾Õ¿¡¼­ ¿¬»êÀÚ ¿À¹ö·ÎµùÀ» ³íÇÒ ¶§
Àá½Ã this Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿´´Âµ¥ ´Ù½Ã Çѹø ´õ ±× ºÎºÐÀ» »ìÆì º¸ÀÚ.

Time Time::operator +(Time T) {   // + ¿¬»êÀÚ ÇÔ¼öÀÇ Á¤ÀÇ
sec +=T.sec;   
min +=T.min;
hour+=T.hour;
if (sec>60) {
 min++;
 sec-=60;
}
if (min>60) {
 hour++;
 min-=60;
}
hour %= 12;
return (*this);      // °´Ã¼ ±× ÀÚü¸¦ ¸®ÅÏÇÑ´Ù.
}
void main()
{
Time a,b,c;
a.settime(2,12,23);
b.settime(11,10,40);
b.settime(1,1,1);
a=a+b+c;              // ¼¼ °³ÀÇ °´Ã¼¸¦ ÇѲ¨¹ø¿¡ ´õÇÑ´Ù.
}

Time Ŭ·¡½ºÀÇ ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö·Î Á¤ÀǵǾî ÀÖ´Â + ¿¬»êÀÚ ÇÔ¼ö´Â ½Ã°£³¢¸®
´õÇÑ ÈÄ¿¡ ¿¬»êÀÇ °á°úÀÎ °´Ã¼¸¦ ¸®ÅÏÇØÁØ´Ù. ±×·¡¼­ + ¿¬»êÀÚ¸¦ »ç¿ëÇØ ¿©·¯
°³ÀÇ °´Ã¼¸¦ ÇѲ¨¹ø¿¡ ´õÇÒ ¼ö°¡ ÀÖ´Ù. ¸¸¾à + ¿¬»êÀÚ°¡ °´Ã¼¸¦ ¸®ÅÏÇÏÁö ¾Ê°í
¿¬»ê¸¸ ÇØÁشٸé a=a+b+c; ÀÇ ¿¬»ê½ÄÀº ´ÙÀ½°ú °°ÀÌ µÎ ¹ø ³ª´©¾î¼­ ¼öÇàÇؾß
ÇÑ´Ù.

À̾ °è¼ÓµË´Ï´Ù. ==============>>>>>>>


--------------------------------------------------------------------------------

    

 ´ÙÀ½