25-4.Ŭ·¡½º

25-4-°¡.class

C++ÀÇ ±¸Á¶Ã¼´Â ¸â¹ö ÇÔ¼ö¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù´Â ¸é¿¡¼­ CÀÇ ±¸Á¶Ã¼¿¡ ºñÇØ Àǹ̰¡ È®ÀåµÇ¾ú´Ù. ÀÌÇü ŸÀÔ º¯¼öÀÇ ÁýÇÕÀÎ ±¸Á¶Ã¼°¡ ½º½º·ÎÀÇ µ¿ÀÛÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº ¾ÆÁÖ Áß¿äÇÑ Àǹ̰¡ ÀÖÀ¸¸ç °´Ã¼ ÁöÇâ ±¸ÇöÀ» À§ÇÑ Ã¹ °ÉÀ½À̶ó ÇÒ ¼ö ÀÖ´Ù. C++ÀÇ Ã¢½ÃÀÚÀÎ ½ºÆ®·Î½ºÆ®·ìÀº È®ÀåµÈ ÀǹÌÀÇ ±¸Á¶Ã¼¿¡ ¹º°¡ ¸ÚÀÖ°í »õ·Î¿î À̸§À» ºÙ¿© ÁÖ¾ú´Âµ¥ ±×°ÍÀÌ ¹Ù·Î Ŭ·¡½ºÀÌ´Ù. ±¸Á¶Ã¼¶ó´Â ¿ë¾î¸¦ ±×³É »ç¿ëÇØµµ º° ¹®Á¦´Â ¾ø°ÚÁö¸¸ CÀÇ ÀüÅëÀûÀÎ ±¸Á¶Ã¼¿Í C++¿¡¼­ È®ÀåµÈ ±¸Á¶Ã¼ÀÇ Â÷À̸¦ ¸íÈ®ÇÏ°Ô ±¸ºÐÇÏ°í ½Í¾ú°í ±×·¡¼­ À̸§À» ¹Ù²Û °ÍÀÌ´Ù.

º°µµÀÇ À̸§À» ºÙ¿´´Ù´Â °ÍÀº ¾ð¾î â½ÃÀÚ°¡ ÀÏÁ¾ÀÇ ¾ÖÁ¤ Ç¥ÇöÀ» ÇÑ °ÍÀÌ´Ù. °á±¹ OOPÀÇ ÇÙ½ÉÀ̶ó°í ÇÒ ¼ö Àִ Ŭ·¡½º´Â "È®ÀåµÈ ±¸Á¶Ã¼"·Î °£´ÜÇÏ°Ô Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. CÀÇ ÀüÅëÀûÀÎ ±¸Á¶Ã¼´Â ŸÀÔÀÌ ´Ù¸¥ º¯¼öÀÇ ÁýÇÕÀ̸ç C++ÀÇ È®ÀåµÈ ±¸Á¶Ã¼, Áï Ŭ·¡½º´Â ¿©±â¿¡ ÇÔ¼ö¸¦ ´õ Ãß°¡ÇÑ °ÍÀÌ´Ù. ±¸Á¶Ã¼ ¼±¾ð¹®¿¡¼­ struct Ű¿öµå¸¦ class¶ó´Â »õ·Î¿î Ű¿öµå·Î ¹Ù²Ù±â¸¸ Çϸé Ŭ·¡½º°¡ µÈ´Ù. ¾Õ Àý¿¡¼­ ¸¸µé¾ú´ø È®ÀåµÈ ±¸Á¶Ã¼ PositionÀ» Ŭ·¡½º·Î ´Ù½Ã ¼±¾ðÇØ º¸ÀÚ. struct Ű¿öµå¸¦ class·Î ¹Ù²Ù°í ¼±¾ð¹® ¼±µÎ¿¡ public: ¾×¼¼½º ÁöÁ¤ÀÚ¸¸ Ãß°¡ÇÏ¸é µÈ´Ù.

 

class Position

{

public:

     int x;

     int y;

     char ch;

     void OutPosition();

};

 

Pos2, Pos3ÀÇ ¿¹Á¦¸¦ ÀÌ·¸°Ô ¼öÁ¤Çصµ Àß ½ÇÇàµÈ´Ù. È®ÀåµÈ ±¸Á¶Ã¼¿Í Ŭ·¡½ºÀÇ À¯ÀÏÇÑ Â÷ÀÌÁ¡Àº ¸â¹ö¿¡ ´ëÇÑ µðÆúÆ® ¾×¼¼½º ÁöÁ¤»ÓÀÌ´Ù. ±¸Á¶Ã¼´Â ¸â¹ö ÇÔ¼ö¸¦ °¡Áú ¼ö ¾ø´Â °ÍÀ¸·Î À߸ø ¾Æ´Â »ç¶÷µéÀÌ Àִµ¥ ±×·¸Áö ¾Ê´Ù. ±¸Á¶Ã¼µµ ¸â¹ö ÇÔ¼ö, »ý¼ºÀÚ, ÆÄ±«ÀÚ¸¦ °¡Áú ¼ö ÀÖ°í »ó¼Óµµ °¡´ÉÇϸç Ŭ·¡½º°¡ ¾²ÀÌ´Â ¸ðµç °÷¿¡ ¾µ ¼ö ÀÖ´Ù. ´ÜÁö ¾Æ¹«·± ¾×¼¼½º ÁöÁ¤¾øÀÌ ¸â¹ö¸¦ ¼±¾ðÇÒ ¶§ ÀÌ ¸â¹ö¿¡ ¾î¶² ¾×¼¼½º ÁöÁ¤ÀÌ Àû¿ëµÇ´ÂÁö¸¸ ´Ù¸¦ »ÓÀÌ´Ù. ´ÙÀ½ Äڵ带 º¸ÀÚ.

 

struct S

{

     int x;

     ....

};

S s;

s.x=1234;           // °¡´É

class C

{

     int x;

     ....

};

C c;

c.x=1234;                // ¿¡·¯

 

¾Æ¹«·± ¾×¼¼½º ÁöÁ¤¾øÀÌ ¸â¹ö º¯¼ö x¸¦ ¼±¾ðÇß´Ù. ÀÌ °æ¿ì ±¸Á¶Ã¼ÀÇ ¸â¹ö s.x´Â public ¼Ó¼ºÀ» °¡Áö¸ç ¿ÜºÎ¿¡ °ø°³µÇ´Âµ¥ ºñÇØ Ŭ·¡½ºÀÇ ¸â¹ö c.x´Â private ¼Ó¼ºÀ» °¡Á® ¿ÜºÎ·ÎºÎÅÍ ¼û°ÜÁø´Ù. ±¸Á¶Ã¼ÀÇ µðÆúÆ® ¾×¼¼½º ÁöÁ¤Àº publicÀ̰í Ŭ·¡½ºÀÇ µðÆúÆ® ¾×¼¼½º ÁöÁ¤Àº privateÀÌ´Ù. Ŭ·¡½º´Â °´Ã¼ÀÇ ¾ÈÀü¼ºÀ» À§ÇØ ¿ÜºÎ¿¡¼­ ÇԺηΠ°ªÀ» °Çµå¸®Áö ¸øÇϵµ·Ï ¸â¹ö¸¦ ¼û±â´Â °æÇâÀÌ Àִµ¥ ºñÇØ ±¸Á¶Ã¼´Â °¡±ÞÀûÀÌ¸é ¸â¹ö¸¦ °ø°³ÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ±¸Á¶Ã¼ÀÇ µðÆúÆ® ¾×¼¼½º ÁöÁ¤ÀÌ publicÀÏ ¼ö¹Û¿¡ ¾ø´Â ÀÌÀ¯´Â C¾ð¾î¿ÍÀÇ È£È¯¼ºÀ» À¯ÁöÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù. C¿¡¼­ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ¿ÜºÎ¿¡¼­ ÀÚÀ¯·Ó°Ô ¾×¼¼½ºÇÒ ¼ö ÀÖÀ¸¹Ç·Î C++ÀÇ ±¸Á¶Ã¼µµ ´ç¿¬È÷ ±×·¸°Ô ÇØ¾ß ÇÑ´Ù.

¹°·Ð µðÆúÆ®°¡ ±×·¸´Ù»ÓÀÌÁö ¾çÂÊ ¸ðµÎ ¸í½ÃÀûÀÎ ¾×¼¼½º ÁöÁ¤ÀÚ·Î ¸â¹öÀÇ °ø°³ ¿©ºÎ¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ µÎ ½ÖÀÇ ¼±¾ð¹®ÀÌ ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù´Â °ÍÀ» È®ÀÎÇϵµ·Ï ÇÏÀÚ. µðÆúÆ® ¾×¼¼½º ÁöÁ¤À» private·Î ¹Ù²Û ±¸Á¶Ã¼´Â Ŭ·¡½º¿Í µ¿ÀÏÇÏ¸ç ¹Ý´ë·Î µðÆúÆ® ¾×¼¼½º ÁöÁ¤À» publicÀ¸·Î ¹Ù²Û Ŭ·¡½º´Â ±¸Á¶Ã¼¿Í µ¿ÀÏÇÏ´Ù. ÀÌ ¿Ü¿¡ ±¸Á¶Ã¼¿Í Ŭ·¡½º´Â ¾î¶°ÇÑ Â÷ÀÌÁ¡µµ ¾ø´Ù.

ÀüÅëÀûÀÎ ±¸Á¶Ã¼ÀÇ Àǹ̸¦ È®ÀåÇϸ鼭 ÀÚ¿¬½º·´°Ô Ŭ·¡½º¶ó´Â »õ·Î¿î °³³äÀ» ¼Ò°³Çϴµ¥ ÀÌ´Â ÀÌ¹Ì ¾Ë°í ÀÖ´Â ±¸Á¶Ã¼ÀÇ Áö½ÄÀ» ±â¹ÝÀ¸·Î Ŭ·¡½º¿¡ Á» ´õ ½±°Ô ´Ù°¡°¡µµ·Ï Çϱâ À§ÇÑ ÀǵµÀÌ´Ù. µÎ ¿ë¾î°¡ ºñ·Ï Àǹ̴ °°Áö¸¸ Áö±ÝºÎÅÍ´Â ¸â¹ö ÇÔ¼ö¸¦ °¡Áö´Â È®ÀåµÈ ±¸Á¶Ã¼¸¦ Ŭ·¡½º·Î ºÎ¸£±â·Î ÇÑ´Ù. ÀÌ¹Ì ½ÀµæÇÑ ±¸Á¶Ã¼¿¡ ´ëÇÑ ¹®¹ý, ¿¹¸¦ µé¾î .¿¬»êÀÚ, -> ¿¬»êÀÚ, ±¸Á¶Ã¼ ´ëÀÔ, Áßø ±¸Á¶Ã¼ µîµµ Ŭ·¡½º¿¡ ±×´ë·Î Àû¿ëµÇ¸ç ÀÌÈÄ ¹è¿ì°Ô µÉ »ó¼Ó, ´ÙÇü¼º, ¿¬»êÀÚ ¿À¹ö·Îµù µî Ŭ·¡½º¿¡ Àû¿ëµÇ´Â ¸ðµç À̷аú ¹®¹ýÀº ±¸Á¶Ã¼¿¡µµ µ¿ÀÏÇÏ°Ô Àû¿ëµÈ´Ù.

Ŭ·¡½º¸¦ ¼±¾ðÇÏ´Â ¹®¹ýÀº ´ÙÀ½°ú °°´Ù. ±¸Á¶Ã¼ ¼±¾ð¹®°ú ºñ½ÁÇ쵂 struct Ű¿öµå ´ë½Å class Ű¿öµå¸¦ »ç¿ëÇÏ°í ¸â¹ö ¼±¾ð¹® Áß°£ Áß°£¿¡ ¾×¼¼½º ÁöÁ¤ÀÌ ¿Â´Ù´Â °Í¸¸ ´Ù¸£´Ù. ±¸Á¶Ã¼¿Í ¸¶Âù°¡Áö·Î ¼±¾ð¹®ÀÇ Á¦ÀÏ ³¡¿¡ ¼¼¹ÌÄÝ·ÐÀÌ ¹Ýµå½Ã ÀÖ¾î¾ß ÇÑ´Ù´Â Á¡À» ÁÖÀÇÇÏÀÚ. ¹®Àå ³¡ÀÌ ¼¼¹ÌÄÝ·ÐÀ¸·Î ³¡³­´Ù´Â °ÍÀº C¹®¹ýÀÇ °¡Àå ±âÃÊ¿¡ ÇØ´çÇÏÁö¸¸ ¼÷·ÃµÈ ÇÁ·Î±×·¡¸Óµµ ½Ç¼öÇÏ´Â °æ¿ì°¡ ¸¹´Ù.

 

class À̸§

{

¾×¼¼½º ÁöÁ¤:

     ¸â¹ö º¯¼ö;

     ¸â¹ö ÇÔ¼ö;

     ....

};                          // ¿©±â ¼¼¹ÌÄÝ·ÐÀ» »© ¸ÔÁö ¸»ÀÚ!

 

±¸Á¶Ã¼¿Í ¸¶Âù°¡Áö·Î ¸â¹ö °³¼ö¿¡´Â Á¦ÇÑÀÌ ¾øÀ¸¸ç ÇÊ¿äÇѸ¸Å­ ¾ó¸¶µçÁö ¸¹Àº º¯¼ö¿Í ÇÔ¼ö¸¦ ¸â¹ö·Î Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù. ¸â¹öÀÇ Å¸ÀÔ¿¡µµ ¹°·Ð Á¦ÇÑÀÌ ¾ø´Ù. int, long, double µîÀÇ ±âº»Çü º¯¼ö´Â ¹°·ÐÀÌ°í ¹è¿­, ±¸Á¶Ã¼ µîÀÇ À¯µµÇü°ú ´Ù¸¥ Ŭ·¡½ºÇüÀÇ º¯¼ö±îÁöµµ ¸â¹ö·Î Æ÷Ç﵃ ¼ö ÀÖ´Ù. ±¸Á¶Ã¼³¢¸® ÁßøÀÌ °¡´ÉÇϵíÀÌ Å¬·¡½º³¢¸®µµ Áßø °¡´ÉÇÏ°í ¿­°ÅÇü, typedef µîÀÇ Å¸ÀÔ Á¤Àǵµ Æ÷Ç﵃ ¼ö ÀÖ´Ù. È®ÀåµÈ ±¸Á¶Ã¼¿Í Ŭ·¡½º´Â »ç½Ç»ó °°Áö¸¸ °üÇà»ó ¸â¹ö ÇÔ¼ö¸¦ °¡Áö´Â °æ¿ì´Â Ŭ·¡½º·Î ¼±¾ðÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù.