28-3-¶ó.<< ¿¬»êÀÚ

C++ÀÇ Ç¥ÁØ ½ºÆ®¸² Ãâ·Â °´Ã¼ÀÎ coutÀº << ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÏ¿© ÀÌ ¿¬»êÀÚÀÇ ¿ìº¯À» Ç¥ÁØ Ãâ·Â(¸ð´ÏÅÍ)À¸·Î ³»º¸³»´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. << ¿¬»êÀÚ ´ÙÀ½ÀÇ ÇÇ¿¬»êÀÚ°¡ Á¤¼öµç ½Ç¼öµç Æ÷ÀÎÅÍµç °ÅÀÇ °¡¸®Áö ¾Ê°í Ãâ·ÂµÇ´Âµ¥ ÀÌ·¸°Ô µÇ´Â ÀÌÀ¯´Â cout °´Ã¼ÀÇ ¼Ò¼Ó Ŭ·¡½ºÀÎ ostream¿¡ ´ÙÀ½°ú °°Àº ¿©·¯ ¿øÇüÀÇ << ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö°¡ ¿À¹ö·ÎµùµÇ¾î Àֱ⠶§¹®ÀÌ´Ù.

 

ostream& operator<<(const char *);

ostream& operator<<(char);

ostream& operator<<(short);

ostream& operator<<(int);

ostream& operator<<(long);

ostream& operator<<(float);

ostream& operator<<(double);

....

 

C++ ÄÄÆÄÀÏ·¯´Â << ´ÙÀ½ÀÇ ÇÇ¿¬»êÀÚ Å¸ÀÔÀ» º¸°í ÀûÀýÇÑ << ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö¸¦ È£ÃâÇϹǷΠ°ÅÀÇ ´ëºÎºÐÀÇ ±âº» ŸÀÔÀ» ¹®Á¦¾øÀÌ Ãâ·ÂÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. char *´Â ±×´ë·Î È­¸éÀ¸·Î Àü¼ÛÇÒ °ÍÀ̰í int³ª doubleÀº ¹®ÀÚ¿­·Î ¹Ù²Û ÈÄ Àü¼ÛÇÒ °ÍÀÌ´Ù. ±×·¸´Ù¸é ´ÙÀ½ ¹®ÀåÀº °ú¿¬ ¾î¶»°Ô 󸮵ɱî?

 

Time A(1,2,3);

cout << A;

 

TimeÇüÀÇ °´Ã¼ A¸¦ << ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© cout°´Ã¼·Î º¸³»¸é AÀÇ ³»¿ëÀÌ Á¦´ë·Î Ãâ·ÂµÉ±î? À̰ÍÀº ºÒ°¡´ÉÇÏ´Ù. ¿Ö³ÄÇϸé coutÀº Time Ŭ·¡½º¿¡ ´ëÇØ¼­ ¾Æ´Â ¹Ù°¡ ¾øÀ¸¸ç operator <<(Time) ÇÔ¼ö´Â Á¤ÀǵǾî ÀÖÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ±×·¸´Ù¸é coutÀ¸·Î Time °´Ã¼¸¦ Ãâ·ÂÇÏ·Á¸é TimeÀ» ÇÇ¿¬»êÀÚ·Î ¹Þ¾ÆµéÀÌ´Â ¿¬»êÀÚ ÇÔ¼ö¸¦ Çϳª ´õ ¿À¹ö·ÎµùÇÏ¸é µÉ °ÍÀÌ´Ù. ÀÌ¹Ì ¿À¹ö·ÎµùµÇ¾î ÀÖ´Â << ¿¬»êÀÚ¸¦ coutÀÌ Time°´Ã¼¸¦ ÀνÄÇϵµ·Ï Ãß°¡·Î ¿À¹ö·ÎµùÇÏ´Â °ÍÀÌ´Ù.

ÀÌ °æ¿ì operator << ¿¬»êÀÚ ÇÔ¼ö¸¦ coutÀÇ ¼Ò¼Ó Ŭ·¡½ºÀÎ ostreamÀÇ ¸â¹ö ÇÔ¼ö·Î Ãß°¡Çϰųª ¾Æ´Ï¸é Àü¿ª ÇÔ¼ö·Î ¸¸µé¾î¾ß Çϴµ¥ ¸â¹ö·Î Á¤ÀÇÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù. ¿Ö³ÄÇϸé ostreamÀº C++ Ç¥ÁØ ¶óÀ̺귯¸®¿¡ ÀÌ¹Ì ÄÄÆÄÀϵǾî ÀÖ¾î int³ª double°°Àº ±âº»Çü Ŭ·¡½º¿Í °ÅÀÇ °°Àº ¼öÁØÀÇ Å¸ÀÔÀ̱⠶§¹®ÀÌ´Ù. Ç¥ÁØ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ ¶â¾î °íÄ¥ ¼ö´Â ¾ø°í ±×·¡¼­ ÀÌ °æ¿ì´Â ¹Ýµå½Ã ÇÁ·»µå Àü¿ª ¿¬»êÀÚ ÇÔ¼ö·Î Á¤ÀÇÇØ¾ß ÇÑ´Ù.

 

¿¹ Á¦ : coutTime

#include <Turboc.h>

//#include <iostream.h>

#include <iostream>

using namespace std;

 

class Time

{

     friend ostream &operator <<(ostream &c, const Time &T);

     friend ostream &operator <<(ostream &c, const Time *pT);

private:

     int hour,min,sec;

 

public:

     Time() { }

     Time(int h, int m, int s) { hour=h; min=m; sec=s; }

     void OutTime() {

          printf("%d:%d:%d\n",hour,min,sec);

     }

};

 

ostream &operator <<(ostream &c, const Time &T)

{

     c << T.hour << "½Ã" << T.min << "ºÐ" << T.sec << "ÃÊ";

     return c;

}

 

ostream &operator <<(ostream &c, const Time *pT)

{

     c << *pT;

     return c;

}

 

void main()

{

     Time A(1,1,1);

     Time *p;

 

     p=new Time(2,2,2);

     cout << "ÇöÀç ½Ã°£Àº " << A << "ÀÔ´Ï´Ù." << endl;

     cout << "ÇöÀç ½Ã°£Àº " << p << "ÀÔ´Ï´Ù." << endl;

     delete p;

}

 

¸¸¾à »ç¿ëÇϰí ÀÖ´Â ÄÄÆÄÀÏ·¯¿¡¼­ ÀÌ ¼Ò½º°¡ ÄÄÆÄÀϵÇÁö ¾Ê´Â´Ù¸é iostream ´ë½Å iostream.h Çì´õ ÆÄÀÏÀ» ÀÎŬ·çµåÇÏ°í ³×ÀÓ½ºÆäÀ̽º ¼±¾ðÀ» »èÁ¦ÇÏ¸é µÈ´Ù. VC60 ÀÌ»óÀÇ ÃֽŠÄÄÆÄÀÏ·¯¿¡¼­´Â º° ¹«¸®¾øÀÌ ÄÄÆÄÀϵǴµ¥ ´Ü, Visual C++ 6.0ÀÇ °æ¿ì ¼­ºñ½ºÆÑÀ» ¼³Ä¡ÇÏÁö ¾ÊÀ¸¸é ÀÌ ¿¹Á¦°¡ Á¦´ë·Î ÄÄÆÄÀϵÇÁö ¾Ê´Â ¹ö±×°¡ ÀÖÀ¸¹Ç·Î ¹Ýµå½Ã Ãֽм­ºñ½ºÆÑÀ» ¼³Ä¡ÇÑ ÈÄ ÄÄÆÄÀÏÇϵµ·Ï ÇÏÀÚ. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

ÇöÀç ½Ã°£Àº 1½Ã1ºÐ1ÃÊÀÔ´Ï´Ù

ÇöÀç ½Ã°£Àº 2½Ã2ºÐ2ÃÊÀÔ´Ï´Ù

 

ostream °´Ã¼¿Í TimeÇü °´Ã¼ ¶Ç´Â Æ÷ÀÎÅ͸¦ Àμö·Î ÃëÇÏ´Â ostream << Àü¿ª ¿¬»êÀÚ¸¦ µÎ ¹ú Á¤ÀÇÇϰí ÀÌ ¿¬»êÀÚ ÇÔ¼ö¸¦ TimeÀÇ ÇÁ·»µå·Î ÁöÁ¤Çß´Ù. Ãâ·ÂÀ» À§ÇØ ÀÚ½ÅÀÇ ¸ðµç ¸â¹ö¸¦ ÀÐÀ» ¼ö ÀÖµµ·Ï ±ÇÇÑÀ» ÁÖ¾î¾ß ÇÑ´Ù. ÄÄÆÄÀÏ·¯´Â cout << A¿¬»ê¹®À» ¸¸³µÀ» ¶§ ostream Ŭ·¡½ºÀÇ ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö <<¸¦ °Ë»öÇØ º¸°í TimeÀ» Àμö·Î ÃëÇÏ´Â ÇÔ¼ö°¡ ÀÖ´ÂÁö Á¶»çÇÑ ÈÄ ¸â¹ö Áß¿¡ ±×·± ÇÔ¼ö°¡ ¾øÀ¸¸é Àü¿ª ÇÔ¼ö¸¦ ã´Â´Ù. °á±¹ cout << A¿¬»ê¹®Àº operator <<(cout, A) Àü¿ª ¿¬»êÀÚ ÇÔ¼ö È£Ãâ¹®À¸·Î ÇØ¼®µÇ¾î coutÀ¸·Î Time °´Ã¼ÀÇ ½ÃºÐÃÊ ¸â¹ö¸¦ ¼ø¼­´ë·Î Ãâ·ÂÇÒ °ÍÀÌ´Ù.

TimeÇü Æ÷ÀÎÅ͵µ º°µµÀÇ Å¸ÀÔÀ̹ǷΠÀÌ Å¸ÀÔ¿¡ ´ëÇØ¼­µµ << ¿¬»êÀÚ¸¦ µû·Î Á¤ÀÇÇØ¾ß ÇÑ´Ù. ¹°·Ð º»Ã¼´Â Á÷Á¢ ÀÛ¼ºÇÒ ÇÊ¿ä¾øÀÌ operator <<(Time)ÀÇ °ÍÀ» Àá½Ã ºô¸®±â¸¸ ÇÏ¸é µÈ´Ù. ostream Ŭ·¡½ºÀÇ ¸ðµç << ¿¬»êÀÚ¿Í ¸¶Âù°¡Áö·Î »ç¿ëÀÚ°¡ Á÷Á¢ ¸¸µç << ¿¬»êÀÚ ÇÔ¼öµµ ¹Ýµå½Ã ostreamÇüÀÇ ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇØ¾ß cout << A << p << endl; °°Àº ¿¬¼âÀû Ãâ·ÂÀÌ °¡´ÉÇÏ´Ù.

 

 coutPerson

Person °´Ã¼¸¦ coutÀ¸·Î Ãâ·ÂÇÏ´Â << ¿¬»êÀÚ ÇÔ¼ö¸¦ Á¤ÀÇÇ϶ó. º¹»ç »ý¼ºÀÚ, ´ëÀÔ ¿¬»êÀÚ µîÀº ´çÀå ÇÊ¿äÄ¡ ¾ÊÀ¸¹Ç·Î 26Àå¿¡ ÀÖ´Â °¡Àå °£´ÜÇÑ Person1 ¿¹Á¦¸¦ È®ÀåÇϵµ·Ï ÇÑ´Ù. Person Ŭ·¡½ºÀÇ ¸â¹öµéÀ» È­¸éÀ¸·Î Ãâ·ÂÇϱ⸸ ÇÏ¸é µÈ´Ù.