Как работает алгоритм перегрузки метода?
Каким образом работает алгоритм перегрузки метода в Java(C++ или C#) или хотя бы как он называется?
Знаю только то, что у каждого метода есть своя подпись, которая состоит из имени метода и параметров. Например есть метод A(int i1, int i2) и A(int i1, float f1). Для первого метода подпись будет выглядеть так - A(II), а для второго так - A(IF). Вроде бы понятно как найти подходящую функцию... А если например я вызываю A(II) и в параметры передаю не два числа типа int, а например char и byte. То выходит у меня получается A(CB), в то же время для этого случая подходит и функция A(IF). Как именно нужно определить подходящую функцию? |
Ответ: Как работает алгоритм перегрузки метода?
foldel
компилятор перебирает операторы приведения типов, если после приведения можно вызвать больше одного метода то он ругнётся ошибкой |
Ответ: Как работает алгоритм перегрузки метода?
Хм... Мне это мало о чем говорит...
|
Ответ: Как работает алгоритм перегрузки метода?
С# ругнётся и не подберёт нужный. Тебе нужно будет кастовать в нужный формат.
|
Ответ: Как работает алгоритм перегрузки метода?
Мне всего лишь нужно знать как работает этот алгоритм, хочу написать компилятор в своему языку программирования.
|
Ответ: Как работает алгоритм перегрузки метода?
Цитата:
и что за компилятор, расскажи задумку? |
Ответ: Как работает алгоритм перегрузки метода?
foldel
у тебя будет таблица всех операторов приведения типов (aka из int в float и подобные), во время компиляции получаешь вызываемые типы и список методов которые можно вызвать, самый топорный вариант - начинаешь перебирать все операторы приведения и строить цепочку (например привести из long int в int, а потом в float), если удалось построить цепочку только для одного метода из нескольких перегруженных - ок, если удалось для нескольких - кидаем ошибку |
Ответ: Как работает алгоритм перегрузки метода?
Вложений: 1
Ну вообще мне сразу хотелось сделать компилятор для телефона, но со временем он так вырос, что я понял что на телефоне ему делать нечего, и продолжил писать уже для компа.
Он написан на Java и имеет свою виртуальную машину(которая естественно тоже написана на Java). Спецификация виртуальной машины похожа на JavaVM. Пока это чисто процедурный язык программирования. Вот некоторая информация по языку: Структура программы: PHP код:
Void Integer String Char Float Boolean Вот выкладываю сырую версию программы(ну ОЧЕНЬ сырую и убогую). В архиве Shrimp.jar - это и есть компилятор и runtime. Все остальные файлы - демонстративные исходники. После компиляции исполняемые исполняемый файл будет в папке output(там где и программа). |
Часовой пояс GMT +4, время: 03:41. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot