»ó¼ö ¸â¹ö´Â ÇÑ ¹ø °ªÀÌ Á¤ÇØÁö¸é º¯°æµÉ ¼ö ¾ø´Â ¸â¹öÀÌ´Ù. Ŭ·¡½º Àüü¿¡¼ ÂüÁ¶ÇÏ´Â Áß¿äÇÑ »ó¼ö°¡ ÀÖ´Ù¸é À̸¦ »ó¼ö ¸â¹ö·Î Á¤ÀÇÇÏ¿© Ŭ·¡½º¿¡ Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ¼öÇÐ °è»êÀ» Çϴ Ŭ·¡½º¿¡¼ ¿øÁÖÀ²À» ÀÚÁÖ »ç¿ëÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ »ó¼ö ¸â¹ö¸¦ Á¤ÀÇÇÑ´Ù.
|
¿¹ Á¦ : 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¶ó´Â »ó¼ö ¸â¹ö¸¦ ¼±¾ðÇÑ´Ù. ±×¸®°í °´Ã¼°¡ »ý¼ºµÉ ¶§ »ý¼ºÀÚ¸¦ ÅëÇØ µü ÇÑ ¹ø¸¸ ÃʱâÈÇÑ´Ù.