int
жəне
const int
не-
месе
int
жəне
int&)
ерекшеленетін болса, функциялардың асыра жүктелуі
мүмкін емес.
Функциялардың шаблондары
Көптеген алгоритмдер өздері жүмыс істейтін мəліметтер типтеріне
тəуелді болмайды (классикалық мысал – сұрыптау). Мұндай кездерде
алгоритмді мəліметтердің əртүрлі типтері үшін қолдануға болатындай етіп
параметрлер енгізуге талпыну – табиғи ұмтылыс. Бұл мəселені шешудің
бірінші жолы – тип туралы ақпаратты параметр ретінде беру (мысалы,
функцияға бір параметр арқылы мəліметтерге нұсқауышты, екінші пара-
метр арқылы мəліметтер элементінің ұзындығын байтпен беруге болады).
Қосымша параметр қолдану қосымша код генерациялау қажеттігін білдіреді,
əсіресе рекурсивті шақырулар жəне ішкі циклдердегі шақырулар кезінде
бұл программаның тиімділігін төмендетеді; оның үстіне, типтерді бақылау
мүмкіндігі де болмайды. Осының басқа шешімі ретінде мəліметтердің
əртүрлі типтерімен жұмыс істеу үшін бірнеше асыра жүктелген функциялар-
ды қолдануға болады, бірақ мұндай программада логикасы бойынша бірдей
бірнеше функция пайда болады жəне əрбір жаңа тип үшін жаңа функция
енгізу қажеттігі туады.
89
С++ тілінде параметрлеудің қуатты құралы – шаблондар болып та-
былады. Функциялардың шаблондары жəне кластардың шаблондары бо-
лады (кластардың шаблондары туралы 228 б. қараңыз). Функциялар
шаблондарының көмегімен əртүрлі типтегі мəліметтер үшін қолданылатын
алгоритмді анықтауға болады, ал белгілі бір мəліметтер типі функцияға ком-
пиляция кезінде параметр ретінде беріледі. Компилятор берілген типке сəйкес
келетін дұрыс кодты автоматты түрде генерациялайды. Осылайша, автоматты
түрде өзін-өзі асыра жүктейтін жəне параметрлеумен байланысты қосымша
шығындары жоқ функция құрылады.
Қарапайым шаблон-функцияның форматы:
Достарыңызбен бөлісу: |