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 Ŭ·¡½ºÀÇ ¸â¹öµéÀ» ȸéÀ¸·Î Ãâ·ÂÇϱ⸸ ÇÏ¸é µÈ´Ù.