Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет213/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   209   210   211   212   213   214   215   216   ...   466
// специализациясы 
long х;
};
template class V> class C{
V y; 
V z;
};
...
C c;
Бұл
мысалда 
С<А>
ішінде 
V
бастапқы шаблонды қолданады, сол 
себепті 
с.у.х
типі 
int
болады, ал 
V
шаблон специализациясын 
қолданады, сондықтан 
с.z.х
типі 
long
болады.
Бүтін типті айнымалылар болып табылатын формалды параметрлердің 
орындарында тұрақтылық өрнектер болу керек.
Шаблонның көмегімен объектілерді құрғаннан кейін олармен қарапайым 
кластардың объектілерімен бірдей жұмыс істеуге болады, мысалы:
for (int i = 1; i<10; i++) List_double.add(i * 0.08); 
List_double.print();


238
// ----------------------------------
for (int i = 1; i<10; i++) List_monstr.add(i);
List_monstr.print();
// ----------------------------------
strcpy(buf, "Өте маңызды хабарлама"); 
cout << buf << endl;
Кластардың шаблондарын қолдануды жеңілдету үшін 
typedef
көмегімен 
типтерге қайта атау беруді жүзеге асыруға болады:
typedef List Ldbl;
Ldbl List_double;
Класс шаблондарының специализациясы 
Шаблон бойынша құрылатын кластың немесе функцияның əрбір 
нұсқасының базалық кодтары бірдей болады; тек шаблон параметрлерімен 
байланысы бар элементтер өзгереді. Мұндайда əртүрлі мəліметтер типтері 
үшін құрылатын нұсқалардың жұмыс істеу тиімділігі де əркелкі болуы мүмкін. 
Егер қандай да бір мəліметтер типі үшін бұрынғысынан тиімдірек код 
бар болса, онда бұл тип үшін жеке əдістердің арнайы жүзеге асырылуын 
қарастыруға болады немесе класс шаблонын толығымен қайта анықтау (спе-
циализациялау) керек болады. 
Əдісті специализациялау үшін оның тақырыбында нақты мəліметтер 
типін көрсету арқылы код нұсқасын анықта алу керек. Мысалы, егер 


Достарыңызбен бөлісу:
1   ...   209   210   211   212   213   214   215   216   ...   466




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет