[C++]2ºÎ°­ÁÂ(54)<--Ŭ·¡½º ÅÛÇø´





¿©±â¼­ Á¤ÀÇµÈ intdata Ŭ·¡½º´Â È­¸é»óÀÇ Æ¯Á¤ ÁÂÇ¥¿¡ Ãâ·ÂµÉ Á¤¼ö°ªÀ» µ¥ÀÌ
ÅÍ ¸â¹ö·Î °¡Áö¸ç »ý¼ºÀÚ¿Í Ãâ·Â ¸â¹ö ÇÔ¼ö¸¦ °¡Áø´Ù. ¶ÇÇÑ chardata, realdat
a Ŭ·¡½º´Â °¢°¢ ¹®ÀÚÇü, ½Ç¼öÇü °ªÀ» µ¥ÀÌÅÍ ¸â¹ö·Î °¡Áö¸ç ±¸¼ºÀº intdata
Ŭ·¡½º¿Í µ¿ÀÏÇÏ´Ù. °á±¹ ¼¼°³ÀÇ Å¬·¡½º´Â µ¥ÀÌÅÍ ¸â¹öÀÇ Å¸ÀÔ°ú ±×¿¡ µû¸¥ »ý
¼ºÀÚ°¡ ¾à°£¾¿ Â÷ÀÌ°¡ ÀÖÀ» »Ó µ¿ÀÏÇÑ ±¸Á¶¸¦ °¡Áö´Â ģô»¹ µÇ´Â Ŭ·¡½ºµéÀÌ
´Ù. ÀÌ·± Ŭ·¡½ºµéÀº ÅÛÇø´À» »ç¿ëÇϸé ÀÏÀÏÀÌ Á¤ÀÇÇÏÁö ¾Ê°í ÀϹÝÀûÀÎ ÇüÅÂ
·Î Á¤ÇüÈ­ÇÒ ¼ö ÀÖ´Ù.
ÅÛÇø´À» »ç¿ëÇÏ¿© Ŭ·¡½º¸¦ Á¤ÀÇÇÏ´Â ÀϹÝÀûÀÎ ¹®¹ýÀº ´ÙÀ½°ú °°´Ù.

template <Àμö ¸®½ºÆ®>
Ŭ·¡½º ¼±¾ð

ÇÔ¼ö ÅÛÇø´°ú ¸¶Âù°¡Áö·Î Ŭ·¡½º ¼±¾ð ºÎºÐ¿¡ ÅÛÇø´ÀÇ Àμö ¸®½ºÆ®°¡ »ç¿ë
µÈ´Ù´Â °ÍÀ» Á¦¿ÜÇÏ°í´Â ÀϹÝÀûÀΠŬ·¡½º ¼±¾ð½Ä°ú µ¿ÀÏÇÏ´Ù. ÅÛÇø´À» »ç¿ëÇÏ
¿© ¼±¾ðµÈ Ŭ·¡½º¸¦ ÅÛÇø´ Ŭ·¡½º¶ó°í Çϸç ÅÛÇø´ Ŭ·¡½º·Î °´Ã¼¸¦ Á¤ÀÇÇÏ´Â
¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.

template-class <Àμö ¸®½ºÆ®> object;

Àμö ¸®½ºÆ®¿¡ µé¾î°¥ ¼ö ÀÖ´Â °ÍÀº ÁÖ·Î ÀÚ·áÇüÀÌÁö¸¸ »ó¼ö·Î ±¸¼ºµÈ ¼ö½ÄÀÌ
³ª ÇÔ¼ö µîµµ °¡´ÉÇÏ´Ù. ÅÛÇø´ Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â ±¸Ã¼ÀûÀÎ ¿¹Á¦¸¦ º¸ÀÚ. ¾Õ
ÀÇ ¿¹Á¦ÀÇ ¼¼ Ŭ·¡½º¸¦ ÅÛÇø´ Ŭ·¡½º·Î ÅëÇÕÇÏ¿© ¼±¾ðÇÏ¿´´Ù.

#include <iostream.h>
#include <conio.h>
template <class T>
class somedata {
protected:
 int x,y;
 T data;
public:
 somedata(int ax,int ay,T adata)
 {
   x=ax;
   y=ay;
   data=adata;
 }
 void outdata(void)
 {
   gotoxy(x,y);
   cout << data;
 }
};

void main()
{
clrscr();
somedata<int> int1(10,10,12);
somedata<char> char1(15,15,'S');
somedata<float> real1(30,10,3.14159265);
int1.outdata();
char1.outdata();
real1.outdata();
}

±æ´Ù¶õ ¼Ò½º°¡ ¹«Ã´À̳ª °£´ÜÇØÁ³À¸¸ç µÑ ´Ù Ãâ·Â °á°ú´Â ¸¶Âù°¡ÁöÀÌ´Ù. ¼¼
°³ÀÇ Å¬·¡½º¿¡¼­ °°Àº ºÎºÐÀº ±×´ë·Î µÎ°í ´Ù¸¥ ºÎºÐÀº Àμö T¸¦ ´ëüÇÏ¿© som
edata¶ó´Â À̸§ÀÇ ÅÛÇø´ Ŭ·¡½º¸¦ ¸¸µé¾ú´Ù. ±×¸®°í main ÇÔ¼ö¿¡¼­´Â somedat
a¿Í Àμö ¸®½ºÆ®¸¦ »ç¿ëÇÏ¿© °´Ã¼¸¦ »ý¼º½ÃŲ´Ù.
somedata<int> int1(10,10,12);¿¡¼­ T°¡ int·Î ÁÖ¾îÁö¸ç somedata ÅÛÇø´ Ŭ
·¡½º³»ÀÇ T°¡ int·Î ¹Ù²ï Ŭ·¡½ºÇüÀÇ °´Ã¼ int1À» »ý¼ºÇÑ´Ù. int1 µÚÀÇ (10,10
,12)´Â »ý¼ºÀÚ È£Ãâ¿¡ »ç¿ëµÇ´Â ÀμöÀÌ´Ù. ¾Õ ¿¹Á¦¿¡¼­ intdata int1(10,10,12)
¸¦ »ç¿ëÇÑ °Í°ú µ¿ÀÏÇÑ °á°ú¸¦ °¡Á®¿À°Ô µÈ´Ù. ±×¸®°í ¿¬À̾ ¶È°°Àº ÅÛÇø´
Ŭ·¡½º¸¦ »ç¿ëÇÏ¿© char1 °´Ã¼¿Í real1 °´Ã¼¸¦ »ý¼º½ÃÅ°°í ÀÖ´Ù.
¿©±â¼­ somedata<int>, somedata<char> µîÀÇ Àμö ¸®½ºÆ®¿Í ÇÔ²² ¾²ÀÎ ÅÛÇø´
Ŭ·¡½º´Â ÀÏ¹Ý Å¬·¡½º¿Í µ¿ÀÏÇÑ È¿°ú¸¦ ¹ßÈÖÇÏ¸ç µ¿µîÇÑ ÀÚ°ÝÀ» °¡Áø´Ù. ½ÇÁ¦
·Î Ŭ·¡½º À̸§ÀÌ »ç¿ëµÉ ¼ö ÀÖ´Â °÷À̸é ÅÛÇø´-Ŭ·¡½ºµµ ¶È°°ÀÌ »ç¿ëÇÒ ¼ö
ÀÖ´Ù. ÅÛÇø´-Ŭ·¡½º¸¦ »ç¿ëÇÏ¿© ¸â¹ö ÇÔ¼ö¸¦ ¼±¾ðÇÒ ¶§ ¼Ò¼Ó Ŭ·¡½ºÀÇ Ç¥±â¿¡
ÅÛÇø´ Ŭ·¡½º¸¦ ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â »ý¼ºÀÚ somedata¸¦ Ŭ·¡
½º¿ÜºÎ¿¡ Á¤ÀÇÇÑ °ÍÀÌ´Ù.

#include <iostream.h>
#include <conio.h>
template <class T>
class somedata {
protected:
 int x,y;
 T data;
public:
 somedata(int ax,int ay,T adata);
 void outdata(void)
 {
   gotoxy(x,y);
   cout << data;
 }
};
template<class T> somedata<T>::somedata(int ax,int ay,T adata) {
x=ax;
y=ay;
data=adata;
}

void main()
{
clrscr();
somedata<int> int1(10,10,12);
somedata<char> char1(15,15,'S');
somedata<float> real1(30,10,3.14159265);
int1.outdata();
char1.outdata();
real1.outdata();
}

ÇÔ¼ö ÅÛÇø´À» »ç¿ëÇÏ¿© ÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ý°ú µ¿ÀÏÇÏ´Ù. Ŭ·¡½º ÅÛÇø´À»
¼±¾ðÇÒ ¶§ ÁÖÀÇÇÒ Á¡Àº ÅÛÇø´ÀÇ ¼±¾ðÀº Àü¿ªÀÇ ¹üÀ§¿¡¼­ ÀÌ·ç¾îÁ®¾ß ÇÑ´Ù´Â
°ÍÀÌ´Ù. Áï ¾î¶² ÇÔ¼ö ³»ºÎ¿¡¼­ Ŭ·¡½º-ÅÛÇø´À» ¼±¾ðÇÏ´Â °ÍÀº Çã¿ëµÇÁö ¾Ê´Â
´Ù. Ŭ·¡½º ÅÛÇø´ÀÇ ¼±¾ðÀº ¼Ò½º ÆÄÀÏÀÇ ¼±µÎ ºÎºÐ¿¡¼­ Çϰųª ¾Æ´Ï¸é º°µµÀÇ
Çì´õ ÆÄÀÏ¿¡ ÀÛ¼ºÇÑ ÈÄ ¼Ò½º ÆÄÀÏ ¼±µÎ¿¡¼­ includeÇÑ´Ù¸é Å« ¹®Á¦´Â ¾øÀ» °Í
ÀÌ´Ù.

À̾ °è¼ÓµË´Ï´Ù. ==============>>>>>>>


--------------------------------------------------------------------------------

    

 ´ÙÀ½