ÇÁ·»µå Ŭ·¡½º ÁöÁ¤Àº ƯÁ¤ Ŭ·¡½ºÀÇ ¸ðµç ¸â¹ö ÇÔ¼öµéÀÌ ÀÚ½ÅÀÇ ¼û°ÜÁø ¸â¹ö¸¦ ¸¶À½´ë·Î Àеµ·Ï Çã¶ôÇÏ´Â °ÍÀÌ´Ù. ¸â¹ö ÇÔ¼öÀÇ ¼ö°¡ ¸¹À» °æ¿ì ¸ðµç ¸â¹ö ÇÔ¼öµéÀÌ ´ë»ó Ŭ·¡½ºÀÇ ¸â¹ö¸¦ ¾×¼¼½ºÇÒ Çʿ䰡 ¾øÀ½¿¡µµ ºÒ±¸Çϰí Çã¿ëÀÇ ¹üÀ§°¡ ³Ê¹« ³Ð¾îÁ® À§ÇèÇØÁø´Ù. ÇÁ·»µå ¸â¹ö ÇÔ¼ö´Â ƯÁ¤ Ŭ·¡½ºÀÇ Æ¯Á¤ ¸â¹ö ÇÔ¼ö¸¸ ÇÁ·»µå·Î ÁöÁ¤ÇÏ´Â °ÍÀÌ¸ç ²À ÇÊ¿äÇÑ ÇÔ¼ö¿¡ ´ëÇØ¼¸¸ ¼û°ÜÁø ¸â¹ö¸¦ ¾×¼¼½ºÇϵµ·Ï ¹üÀ§¸¦ Á¼°Ô ¼³Á¤ÇÒ ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ÀÖ´Ù.
°³³äÀº ÇÁ·»µå ÇÔ¼ö¿Í µ¿ÀÏÇ쵂 ´Ù¸¥ Ŭ·¡½º¿¡ ¼ÓÇÑ ¸â¹ö ÇÔ¼ö¶ó´Â °Í¸¸ ´Ù¸£´Ù. Ŭ·¡½º ¼±¾ðºÎ¿¡ ÇÁ·»µå·Î ÁöÁ¤ÇϰíÀÚ ÇÏ´Â ¸â¹ö ÇÔ¼öÀÇ ¿øÇüÀ» friend Ű¿öµå¿Í ÇÔ²² Àû¾îÁÖ¸é µÈ´Ù. ´ÙÀ½ ¿¹´Â Any::func ¸â¹ö ÇÔ¼ö¸¦ Some Ŭ·¡½ºÀÇ ÇÁ·»µå·Î ÁöÁ¤ÇÑ´Ù.
class Some
{
....
friend void Any::func(Some &S);
};
ÀÌ·¸°Ô ¼±¾ðÇϸé AnyŬ·¡½ºÀÇ func ¸â¹ö ÇÔ¼ö´Â Some Ŭ·¡½ºÀÇ ¸ðµç ¸â¹ö¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª Any Ŭ·¡½ºÀÇ ´Ù¸¥ ¸â¹ö ÇÔ¼ö¿¡°Ô´Â ÀÌ·± Ư±ÇÀÌ ºÎ¿©µÇÁö ¾Ê´Â´Ù. ¿À·ÎÁö Any::func¿¡ ´ëÇØ¼¸¸ ÇÁ·»µå ÁöÁ¤À» ÇÑ °ÍÀÌ´Ù. ´ÙÀ½ ¿¹Á¦´Â Date::OutToday ¸â¹ö¸¸ ÇÁ·»µå·Î ÁöÁ¤ÇÑ´Ù.
|
¿¹ Á¦ : FriendMem |
#include <Turboc.h>
class Time;
class Date
{
private:
int year,month,day;
public:
Date(int y,int m,int d) { year=y;month=m;day=d; }
void OutToday(Time &t);
};
class Time
{
friend void Date::OutToday(Time &t);
private:
int hour,min,sec;
public:
Time(int h,int m,int s) { hour=h;min=m;sec=s; }
};
void Date::OutToday(Time &t)
{
printf("¿À´ÃÀº %d³â %d¿ù %dÀÏÀ̸ç Áö±Ý ½Ã°£Àº %d:%d:%dÀÔ´Ï´Ù.\n",
year,month,day,t.hour,t.min,t.sec);
}
void main()
{
Date D(2005,01,02);
Time T(12,34,56);
D.OutToday(T);
}
½ÇÇà °á°ú´Â ¹°·Ð ¾ÕÀÇ µÎ ¿¹Á¦¿Í µ¿ÀÏÇÏ´Ù. OutToday ¸â¹ö ÇÔ¼ö°¡ TimeÀÇ ÇÁ·»µå·Î ÁöÁ¤µÇ¾î ÀÖÀ¸¹Ç·Î TimeÀÇ ¸â¹öµéÀ» ÀÚÀ¯·Ó°Ô ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ¿À·ÎÁö ÀÌ ¸â¹ö ÇÔ¼ö¸¸ ÇÁ·»µå·Î ÁöÁ¤µÇ¾úÀ¸¹Ç·Î ´Ù¸¥ ¸â¹ö ÇÔ¼öµéÀº ¿©ÀüÈ÷ Time Ŭ·¡½º¸¦ ¾×¼¼½ºÇÒ ¼ö ¾ø´Ù. ¸â¹ö ÇÔ¼ö¸¦ ÇÁ·»µå·Î ÁöÁ¤ÇÒ ¶§´Â ¼±¾ð ¼ø¼¿¡ ¾à°£ ½Å°æÀ» ½á¾ß ÇÑ´Ù. ÇÁ·»µå ¸â¹ö ÇÔ¼ö´Â ÇÁ·»µå·Î ÁöÁ¤µÇ´Â Ŭ·¡½º ¼Ò¼ÓÀ̸ç Åë»ó ´ë»ó Ŭ·¡½º¸¦ Àμö·Î Àü´Þ¹Þ±â ¶§¹®¿¡ ÇÁ·»µå ÁöÁ¤À» Æ÷ÇÔÇϴ Ŭ·¡½º¸¦ ¸ÕÀú ¼±¾ðÇϰí ÇÁ·»µå ¸â¹ö ÇÔ¼ö¸¦ Æ÷ÇÔÇÑ Å¬·¡½º¸¦ Àü¹æ ¼±¾ðÇØ¾ß ÇÑ´Ù.
Time¿¡¼ Date::OutToday¸¦ ÇÁ·»µå·Î ÁöÁ¤Çϱâ À§Çؼ´Â ÀÌ ÇÔ¼öÀÇ ¿øÇüÀ» ¸ÕÀú ¾Ë·Á¾ß ÇϹǷΠDate Ŭ·¡½º°¡ ¾ÕÂÊ¿¡ ¼±¾ðµÇ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ OutToday¿¡¼ TimeÇü °´Ã¼¸¦ Àμö·Î Àü´Þ¹ÞÀ¸¹Ç·Î Date Ŭ·¡½º ¼±¾ð¹® ÀÌÀü¿¡ TimeÀÌ Å¬·¡½º¶ó´Â Àü¹æ ¼±¾ðÀÌ ÇÊ¿äÇÏ´Ù. ¼ø¼°¡ ¹Ù²î¸é ¾ÈµÈ´Ù. ±×¸®°í OutTodayÀÇ º»Ã¼¿¡¼ Time °´Ã¼ÀÇ ¸â¹ö¸¦ ÂüÁ¶ÇϹǷΠÀÌ ÇÔ¼öÀÇ º»Ã¼´Â Ŭ·¡½º ¼±¾ðºÎ¿¡ µÑ ¼ö ¾øÀ¸¸ç Time Ŭ·¡½º Á¤ÀÇ ÈÄ¿¡ µû·Î º»Ã¼¸¦ Á¤ÀÇÇØ¾ß ÇÑ´Ù. ¸¸¾à OutToday¸¦ ÀζóÀÎÀ¸·Î ¸¸µé°í ½Í´Ù¸é º»Ã¼ Á¤ÀǺο¡ inline Ű¿öµå¸¦ ¾²¸é µÈ´Ù.
µÎ Ŭ·¡½º°¡ ¼·Î¸¦ ÂüÁ¶Çϰí ÀÖ´Â »óȲÀÌ¶ó ¼±¾ð ¼ø¼°¡ Á¶±Ý ³À⽺·´´Ù. ¸»·Î ¼³¸íÀ» ÇÏÀÚ´Ï ±¦È÷ º¹ÀâÇØ º¸ÀÌÁö¸¸ Á÷Á¢ Äڵ带 ÀÛ¼ºÇØ º¸¸é º° °Íµµ ¾Æ´Ñ ±ÔÄ¢µéÀÌ´Ù. °£´ÜÈ÷ ¿ä¾àÇÏÀÚ¸é ¼·Î ¾Ë ¼ö ÀÖµµ·Ï ¼Ò°³ÇØ ÁÖ´Â °Í »ÓÀÌ´Ù. À§ ¿¹Á¦ÀÇ ¼±¾ð ¼ø¼¸¦ ¹Ù²ã º¸°í ¿¡·¯ ¸Þ½ÃÁö¸¦ ÀÐ¾î º¸¸é ¾î¶² ¼±¾ð ¼ø¼°¡ ÁÁÀºÁö Á÷°¨ÀûÀ¸·Î ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¿¡·¯ ¸Þ½ÃÁö°¡ ÁöÀûÇϴ´ë·Î ¼ø¼¸¦ ¹Ù²Ù°í Àü¹æ ¼±¾ðÀ» Á¶±Ý¸¸ Ȱ¿ëÇÏ¸é µÈ´Ù.