27-4.»ó¼ö ¸â¹ö

27-4-°¡.»ó¼ö ¸â¹ö

»ó¼ö ¸â¹ö´Â ÇÑ ¹ø °ªÀÌ Á¤ÇØÁö¸é º¯°æµÉ ¼ö ¾ø´Â ¸â¹öÀÌ´Ù. Ŭ·¡½º Àüü¿¡¼­ ÂüÁ¶ÇÏ´Â Áß¿äÇÑ »ó¼ö°¡ ÀÖ´Ù¸é À̸¦ »ó¼ö ¸â¹ö·Î Á¤ÀÇÇÏ¿© Ŭ·¡½º¿¡ Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ¼öÇÐ °è»êÀ» Çϴ Ŭ·¡½º¿¡¼­ ¿øÁÖÀ²À» ÀÚÁÖ »ç¿ëÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ »ó¼ö ¸â¹ö¸¦ Á¤ÀÇÇÑ´Ù.

 

¿¹ Á¦ : ConstMember

#include <Turboc.h>

 

class MathCalc

{

private:

     const double pie;

 

public:

     MathCalc(double apie) : pie(apie) { }

     void DoCalc(double r) {

          printf("¹ÝÁö¸§ %.2fÀÎ ¿øÀÇ µÑ·¹ = %.2f\n",r,r*2*pie);

     }

};

 

void main()

{

     MathCalc M(3.1416);

     M.DoCalc(5);

}

 

¿øÁÖÀ²À» Á¤ÀÇÇÏ´Â °ªÀ» pie¶ó´Â »ó¼ö ¸â¹ö·Î Æ÷ÇÔ½ÃÄ×´Ù. 3.1416À̶ó´Â °ªÀ» ¹Ù·Î ¾²Áö ¾Ê°í »ó¼ö ¸â¹ö¸¦ »ç¿ëÇÒ ¶§ÀÇ ÀåÁ¡Àº ¸ÅÅ©·Î »ó¼öÀÇ °æ¿ì¿Í ¸¶Âù°¡Áö·Î °ªÀÇ ÀÇ¹Ì ÆÄ¾ÇÀÌ ½±°í ¼öÁ¤Çϱ⠽±´Ù´Â Á¡ÀÌ´Ù. »ó¼ö´Â ´ëÀÔÀ» ¹ÞÀ» ¼ö ¾ø±â ¶§¹®¿¡ ¹Ýµå½Ã »ý¼ºÀÚÀÇ ÃʱâÈ­ ¸®½ºÆ®¿¡¼­ ÃʱâÈ­ÇØ¾ß Çϴµ¥ ÀÌ´Â ¾Õ¿¡¼­ ÀÌ¹Ì ¾Ë¾Æº» ³»¿ëÀÌ´Ù. »ó¼ö ¸â¹ö°¡ ¸ðµç °´Ã¼¿¡ ´ëÇØ Ç×»ó °°Àº °ªÀ» °¡Áø´Ù¸é °´Ã¼¸¦ »ý¼ºÇÒ ¶§¸¶´Ù ¸Å¹ø ÃʱâÈ­ÇÒ ÇÊ¿ä¾øÀÌ Á¤Àû ¸â¹ö·Î ¼±¾ðÇÑ ÈÄ µü ÇÑ ¹ø¸¸ ÃʱâÈ­ÇÒ ¼öµµ ÀÖ´Ù.

 

class MathCalc

{

private:

    static const double pie;

 

public:

    MathCalc() { }

     void DoCalc(double r) {

          printf("¹ÝÁö¸§ %.2fÀÎ ¿øÀÇ µÑ·¹ = %.2f\n",r,r*2*pie);

     }

};

const double MathCalc::pie=3.1416;

 

void main()

{

    MathCalc M;

     M.DoCalc(5);

}

 

pie ¸â¹ö ¼±¾ð¹®¾Õ¿¡ staticÀ» ºÙÀ̸é ÀÌ ¸â¹ö´Â Ŭ·¡½º³»ÀÇ ¸ðµç ¸â¹ö°¡ °øÀ¯ÇÏ´Â Á¤Àû ¸â¹ö°¡ µÈ´Ù. Á¤Àû ¸â¹ö´Â Ŭ·¡½º ¿ÜºÎ¿¡¼­ ´Ù½Ã ÇÑ ¹ø ´õ Á¤ÀÇÇØ¾ß Çϸç À̶§ ÃʱⰪÀ» Áִµ¥ ÀÏ¹Ý Á¤Àû ¸â¹ö¿Í´Â ´Þ¸® »ó¼ö ¸â¹ö´Â ¼±¾ðÇÒ ¶§ ÃʱⰪÀ» ¹Ýµå½Ã ÁöÁ¤ÇØ¾ß ÇÑ´Ù. pie´Â Á¤ÀûÀ̸鼭µµ »ó¼ö¶ó´Â ¼ºÁúÀÌ ÀÖ¾î Á¤ÀÇÇÒ ¶§ ÃʱâÈ­ÇÏÁö ¾ÊÀ¸¸é ´Ù½Ã´Â ÃʱâÈ­ÇÒ ±âȸ°¡ ¾ø´Ù. Ãʱâ½ÄÀÌ ¿ÜºÎ Á¤ÀÇ·Î À̵¿µÇ¾úÀ¸¹Ç·Î »ý¼ºÀÚ´Â ´õ ÀÌ»ó ÀÌ ¸â¹ö¸¦ ÃʱâÈ­ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.

´Ü ÀÌ·¸°Ô Á¤Àû »ó¼ö ¸â¹ö·Î ¼±¾ðÇϸé Ŭ·¡½º Àüü¸¦ ÅëÆ²¾î pie°¡ Çϳª¸¸ Á¸ÀçÇϹǷΠ°¢°¢ÀÇ MathCalc °´Ã¼´Â ¸ðµÎ °°Àº »ó¼ö¸¦ °øÀ¯ÇÏ¸ç °´Ã¼º°·Î ´Ù¸¥ °ªÀ» °¡Áú ¼ö ¾ø´Ù. Á¤Àû »ó¼ö°¡ ¾Æ´Ò ¶§´Â ´ÙÀ½°ú °°ÀÌ °´Ã¼º°·Î ÇÊ¿äÇÑ Á¤¹Ðµµ¿¡ µû¶ó ´Ù¸¥ ¿øÁÖÀ²°ªÀ» °¡Áú ¼öµµ ÀÖ´Ù.

 

MathCalc M1(3.14);

MathCalc M1(3.1416);

MathCalc M1(3.14159265358979);

 

»ó¼ö ¸â¹ö¸¦ ÃʱâÈ­ÇÏ´Â ¼¼ ¹øÂ° ¹æ¹ýÀº µÎ ¹øÂ° ¹æ¹ý¿¡ Ãʱâ½ÄÀ» °°ÀÌ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀÌ´Ù. Ŭ·¡½º ¼±¾ð¹®³»ÀÇ ¸â¹ö ¼±¾ð¹®¿¡ ¾Æ¿¹ Ãʱâ½ÄÀ» °°ÀÌ ÁÖ´Â °ÍÀÌ´Ù. Á¤Àû »ó¼ö ¸â¹ö ¼±¾ð ¹× Á¤ÀÇ ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ Á» ´õ ª°í °£´ÜÇÏ°Ô ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù.

 

class MathCalc

{

private:

    static const double pie=3.1416;

     ....

 

Á¤Àû ¸â¹ö´Â °´Ã¼¿¡ ¼Ò¼ÓµÇÁö ¾Ê°í Ŭ·¡½º¿¡ ¼Ò¼ÓµÇ¹Ç·Î Ŭ·¡½º¸¦ ¼±¾ðÇÒ ¶§ ÃʱâÈ­ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹æ¹ýÀº ÃÖ±Ù¿¡ C++ Ç¥ÁØ¿¡ Ãß°¡µÈ °ÍÀ̾ ¸ðµç ÄÄÆÄÀÏ·¯°¡ Áö¿øÇÏÁö´Â ¾Ê´Â´Ù. gcc´Â ÀÌ ¹æ¹ýÀ» Àß Áö¿øÇÏ¸ç ºñÁÖ¾ó C++ÀÇ °æ¿ì 6.0Àº ÀÌ ¹æ¹ýÀ» Áö¿øÇÏÁö ¾Ê°í 7.0ÀÌÈÄ´Â Áö¿øÇ쵂 ´Ü, Á¤¼ö ¸â¹ö¿¡ ´ëÇØ¼­¸¸ ÃʱⰪÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ºñ·Ï ÃֽŠC++ Ç¥ÁØ¿¡¼­ Çã¿ëÇϱâ´Â ÇÏÁö¸¸ ¾ÆÁ÷±îÁö´Â ȣȯ¼º¿¡ ºÒ¸®ÇϹǷΠ¿ÜºÎ Á¤ÀǸ¦ µû·Î µÎ´Â °ÍÀÌ ´õ ¹Ù¶÷Á÷ÇÏ´Ù.

»ç¿ëÇϰíÀÚ ÇÏ´Â »ó¼ö°¡ Á¤¼ö ŸÀÔÀÎ °æ¿ì´Â »ó¼ö ¸â¹ö ´ë½Å ¿­°Å ¸â¹ö¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ¿­°ÅÇü Á¤ÀÇ ¹®¹ý¿¡ µû¶ó ¿­°Å ¸â¹ö ´ÙÀ½¿¡ =ÃʱⰪÀ» ÁÙ ¼ö Àִµ¥ À̸¦ ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. ¿­°Å ¸â¹öÀÇ °ª¸¸ »ç¿ëÇÏ´Â °ÍÀ̹ǷΠ¿­°ÅÇü ŸÀÔÀÇ À̸§Àº ÁÙ Çʿ䰡 ¾ø´Ù. ´ÙÀ½ÀÇ Some Ŭ·¡½º´Â 123À¸·Î Á¤ÀÇµÈ Value¶ó´Â ¿­°Å ¸â¹ö¸¦ °¡Áø´Ù.

 

class Some

{

public:

     enum { Value=123 };

     ....

 

¿­°Å ¸â¹ö´Â ÄÄÆÄÀÏ·¯°¡ ÄÄÆÄÀÏÁß¿¡¸¸ »ç¿ëÇÏ¸ç ½ÇÁ¦·Î ¸Þ¸ð¸®¸¦ Â÷ÁöÇÏÁö ¾ÊÀ¸¹Ç·Î ¼±¾ð¹®³»¿¡¼­µµ °ªÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ¶Ç´Â Á¶±Ý ¾î¿ï¸®Áö ¾ÊÁö¸¸ Ŭ·¡½º ¼±¾ð¹®³»¿¡ #define Value 123°°Àº ¸ÅÅ©·Î »ó¼ö Á¤Àǹ®À» µÎ´Â °Íµµ °¡´ÉÇÏ´Ù. ¿­°Å ¸â¹ö³ª ¸ÅÅ©·Î »ó¼ö´Â Á¶±Ý ±¸½ÄÀ̱â´Â ÇÏÁö¸¸ Á¤Àû »ó¼ö ¸â¹ö´Ï ÃʱâÈ­ ¸®½ºÆ®´Ï ÇÏ´Â °ÅâÇÑ ¹®¹ýº¸´Ù ¼ÖÁ÷È÷ Á¦ÀÏ ¼ÓÆíÇÑ ¹æ¹ýÀÌ´Ù. ´Ü ¿­°Å ¸â¹ö´Â Á¤¼öÇü »ó¼ö¸¸ Ç¥ÇöÇÒ ¼ö ÀÖ°í ¸ÅÅ©·Î »ó¼ö´Â ÇÁ·ÎÁ§Æ® Àüü¿¡ °ÉÃÄ À¯ÀÏÇÑ À̸§À» ÁÖ¾î¾ß ÇÑ´Ù´Â Á¦¾àÀÌ ÀÖ´Ù. ¶ÇÇÑ ¸ÅÅ©·Î³¢¸® ÂüÁ¶µÉ ¶§ °ýÈ£¸¦ Àß ½Î¾ß ÇÑ´Ù´Â °Íµµ Ç×»ó ÁÖÀÇÇØ¾ß ÇÑ´Ù.

Á¤Àû »ó¼ö ¸â¹ö´Â Ŭ·¡½º°¡ ¼ÒÀ¯Çϱ⠶§¹®¿¡ °´Ã¼º°·Î °ªÀ» µû·Î °¡Áú ¼ö´Â ¾ø´Ù. ¿­°ÅÇüÀ̳ª ¸ÅÅ©·Î »ó¼öµµ ¸¶Âù°¡Áö·Î ÇÑ ¹ø °ªÀÌ Á¤ÇØÁö¸é »ý¼ºµÇ´Â ¸ðµç °´Ã¼°¡ °°Àº °ªÀ» »ç¿ëÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù. »ó¼ö°¡ °´Ã¼º°·Î ´Ù¸¥ °ªÀ» °¡Á®¾ß ÇÑ´Ù¸é À̶§ ¾µ ¼ö ÀÖ´Â À¯ÀÏÇÑ ¹æ¹ýÀº »ý¼ºÀÚÀÇ ÃʱâÈ­ ¸®½ºÆ®»ÓÀÌ´Ù.

 

¿¹ Á¦ : ConstMemberInit

#include <Turboc.h>

 

class Enemy

{

private:

     const int Speed;

 

public:

     Enemy(int aSpeed) : Speed(aSpeed) { }

     void Move() {

          printf("%dÀÇ ¼Óµµ·Î ¿òÁ÷ÀδÙ.\n",Speed);

     }

};

 

void main()

{

     Enemy E1(10), E2(20);

     E1.Move();

     E2.Move();

}

 

Enemy Ŭ·¡½º´Â °ÔÀÓÀÇ Àû±ºÀ» Ç¥ÇöÇϴ Ŭ·¡½ºÀε¥ °¢ °´Ã¼º°·Î °íÀ¯ÇÑ ¼Óµµ¸¦ °¡ÁöµÇ ÇÑ ¹ø Á¤ÇØÁø ¼Óµµ°¡ °´Ã¼ ³»¿¡¼­ ºÒº¯À̶ó¸é Speed¶ó´Â »ó¼ö ¸â¹ö¸¦ ¼±¾ðÇÑ´Ù. ±×¸®°í °´Ã¼°¡ »ý¼ºµÉ ¶§ »ý¼ºÀÚ¸¦ ÅëÇØ µü ÇÑ ¹ø¸¸ ÃʱâÈ­ÇÑ´Ù.