Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

ÌÓÈÑ-ÕØÓÈÑ ÌÊÓÒ

1 Çàãâàð êëàññ
Çàãâàð êëàññ íü °ðã°í õ³ðýýíèé åð°íõèé îéëãîëòóóäûã ä³ðñëýõ, òýäãýýðèéã õîëáîõ ýíãèéí
àðãóóäûã õàíãàäàã. Ñè++ õýëíèé çàãâàðûí ìåõàíèçì íü êëàññ ýñâýë ôóíêöèéí òîäîðõîéëîëòîä
"ò°ð°ë"ïàðàìåòðýýð àâàõ áîëîìæèéã îëãîäîã.
Æèøýý íü äîîðõ õî¼ð òîîíû óòãûã ñîëáèõ ³éëäýë íü ôóíêöèéã äóóäàõäàà ïàðàìåòðò ÿìàð
ò°ðëèéã äàìæóóëñàí òýð ò°ðë°°ð ³³ñýõ áîëíî. Òýãýõýýð óã ôóíêö ÿìàð ÷ ò°ðëèéí óòãûã õîî-
ðîíä íü ñîëáèæ ÷àäíà.
1 template < typename T >
2 void swap ( T & a , T & b )
3 {
4 int c = b ;
5 b = a;
6 a = c;
7 }

Äýýðõ ôóíêöèéã äóóäàõäàà äîîðõ õî¼ð áàéäëààð äóóäàæ áîëíî.


1 string a = " swap " , b = " template " ;
2 swap < string >( a , b ) ;
3 // esvel
4 swap (a , b ) ;

Ôóíêöýä ò°ðëèéí ïàðàìåòð áîëãîí äàìæóóëæ °ã÷ áàéãàà á°ã°°ä ïàðàìåòð³³ä íü ÷ ì°í
òóõàéí ò°ðëèéí õóâüñàã÷èä áàéõ ¼ñòîé. Çàãâàðûí àæèëëàãàà íü ÿìàð "ò°ð°ë"èé äàìæóóëñíààñ
øóóä õàìààðàí àæèëëàõ á°ã°°ä òóõàéí ò°ðëèéí ïàðàìåòð àâäàã øèíý ôóíêö òîäîðõîéëîãäîæ
áàéãàà ãýñýí ³ã þì.
Èéìýýñ åð°íõèé íýã á³òýöòýé êëàññóóäûã çàãâàð àøèãëàí õÿëáàð÷èëæ áîëîõ þì. Çàãâàð
êëàññ áîëîí òýäãýýðèéí ãèø³³í ôóíêö³³äèéã òîäîðõîéëîõäîî ì°í ïàðàìåòðèéí "ò°ð°ë"èéã
àãóóëàõ ¼ñòîé.
Äîîðõ æèøýýíä ýíãèéí õîñ õî¼ð °ã°ãäëèéã õàäãàëàõ êëàññûã òîäîðõîéëú¼.
1 template < typename T >
2 class Hos {
3 T a, b;
4 public :
5 Hos ( const T & , const T &) ;
6 T & first () ;
7 T & second () ;
8 };
9 template < typename T >
10 void Hos <T >:: Hos ( const T & a , const T & b ) {
11 this - > a = a ;
12 this - > b = b ;
13 }
14 template < typename T >
15 T & Hos <T >:: first () {
16 return a ;
17 }
18 template < typename T >
19 T & Hos <T >:: second () {
20 return b ;
ÌÓÈÑ-ÕØÓÈÑ ÌÊÓÒ

21 }
22 int main () {
23 Date d1 (1 , 2 , 2000) , d2 (3 , 5 , 2005) ;
24 Hos < Date > h ( d1 , d2 ) ;
25 cout << h . first () << endl ;
26 cout << h . second () << endl ;
27 }

typename -èéí îðîíä class ò³ëõ³³ð ³ãèéã ÷ õýðýãëýæ áîëîõ áà ýíý õî¼ð áîë ÿìàð íýãýí
÷àíàðûí ÿëãààã³é. Ãýõäýý äàìæóóëàãäàõ "ò°ð°ë"íü åð íü áîë êëàññ áàéíà ãýæ èëòãýõèéí òóëä
class ãýæ áîëîõ þì.

1.1 Äàñãàëóóä

1. Äîîðõ ôóíêö íü ñàíàõ îéí õàÿã áîëîí õýìæýý íü °ã°ãä°õ°ä 0-ãýýð ä³³ðãýýä áóöààãààä
õàÿãèéã íü äàìæóóëäàã á°ã°°ä T íü ÿìàð ÷ ò°ð°ë áàéæ áîëíî. Õýðýãæ³³ë.
T* init(T *a, int n);

2. Buf f er êëàññ íü òîäðîî ÿìàð ÷ íýãýí ò°ðëèéí ýëåìåíò³³ä õàäãàëæ áîëîõîîð õèéãä-
ñýí êëàññ. Queue êëàññ íü Buf f er êëàññààñ óäàìøèõ á°ã°°ä äîòðîî äîîðõ ôóíêö³³äèéã
àãóóëíà.

push øèíý ýëåìåíò õàìãèéí ñ³³ëä îðóóëàõ.


pop õàìãèéí ýõíèé ýëåìåíòèéã óñòãàæ, óòãûã íü áóöààíà.
front õàìãèéí ýõíèé ýëåìåíòèéí óòãûã áóöààõ.
back õàìãèéí ñ³³ëä îðñîí ýëåìåíòèéí óòãûã áóöààõ.

3. Äàðààõ ³éëäë³³äèéã õèéõ ìàòðèö êëàññûã õýðýãæ³³ë. Ìàòðèö êëàññûí ì°ð, áàãàíûí
òîî õýäýýð ÷ ³³ñýæ áîëîõîîð õýðýãæ³³ë.
1 int main ()
2 {
3 Matrix < int > A , B , C ;
4 Matrix < double > M , R , S ;
5 cin >> A >> B ; // matrix - d hereglegchees utga unshina
6 cin >> M >> R ;
7 C = A * B; // matrixiig urjix
8 S = M * R;
9 cout << C << endl ;
10 cout << S << endl ;
11 }

You might also like