Кіріспе

Кейбір бағдарламалау тілдерінің мүмкіндіктері

Кейбір бағдарламалау тілдерінде функцияның немесе әдістің жүктелуі – бірдей атаумен, бірақ әртүрлі іске асырылулары бар бірнеше функцияны құру мүмкіндігі. Жүктелінген функцияға шақыру, шақыру контексіне сәйкес келетін осы функцияның нақты іске асырылуын іске қосады, бұл бір функция шақыруына контекстке байланысты әртүрлі міндеттерді орындауға мүмкіндік береді. Мысалы, және – жүктелінген функциялар. Екіншісін шақыру үшін объектіні параметр ретінде беру қажет, ал біріншісіне параметр қажет емес және бос параметрмен шақырылады. Көбінесе кездесетін қате – екінші функциядағы объектіге әдепкі мән беру, бұл компилятор қай әдісті пайдалану керектігін білмегендіктен, екіұшты шақыру қатесіне әкеледі. Тағы бір мысал – мәтінді немесе суреттерді басып шығаруға байланысты әртүрлі әрекеттерді орындайтын функция. Екі түрлі функцияны жүктеуге болады, егер біз бағдарламамыздың "басып шығаратын" барлық объектілері үшін жүктелінген басып шығару функциясын жазсақ, біз объектінің түрі туралы уайымдамаймыз, және дұрыс функция қайтадан шақырылады, шақыру әрқашан: .

Асқынулар

Функция жүктеуін қиындататын екі мәселе өзара әрекеттеседі: атаудың жасырылуы (ауқымға байланысты) және жасырын түрлендіру. Егер функция бір ауқымда жарияланса, содан кейін сол аты бар тағы бір функция ішкі ауқымда жарияланса, екі мүмкін жүктеу мінез-құлқы бар: ішкі жариялау сыртқы жариялауды (қолтаңбасына қарамастан) жасырады, немесе екі жариялау да жүктемеге қосылады, бірақ ішкі жариялау сыртқы жариялауды тек қолтаңба сәйкес келгенде ғана жасырады. C++ тілінде біріншісі қабылданған: "C++-та ауқымдар арасында жүктеме болмайды". Осыдан келіп, әртүрлі ауқымдарда жарияланған функциялардың жүктеме жиынтығын алу үшін сыртқы ауқымдағы функцияларды кілт сөз арқылы ішкі ауқымға нақты импорттау қажет. Жасырын түрлендіру функция жүктеуін қиындатады, себебі егер параметрлердің түрлері жүктелген функциялардың бірінің қолтаңбасына дәл сәйкес келмесе, бірақ түрлендіруден кейін сәйкес келсе, шешім таңдалған түрлендіруге байланысты болады. Бұл жағдайлар шатастыратын тәсілмен бірігуі мүмкін: мысалы, ішкі ауқымда жарияланған шамалы сәйкестік сыртқы ауқымда жарияланған нақты сәйкестікті жасыра алады.