Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 26.07.2012, 00:50   #1
foldel
Оператор ЭВМ
 
Аватар для foldel
 
Регистрация: 18.11.2010
Сообщений: 23
Написано 0 полезных сообщений
(для 0 пользователей)
Плохо Как работает алгоритм перегрузки метода?

Каким образом работает алгоритм перегрузки метода в 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). Как именно нужно определить подходящую функцию?
__________________
KISS
(Offline)
 
Ответить с цитированием
Старый 26.07.2012, 01:03   #2
jimon
 
Сообщений: n/a
Ответ: Как работает алгоритм перегрузки метода?

foldel
компилятор перебирает операторы приведения типов, если после приведения можно вызвать больше одного метода то он ругнётся ошибкой
 
Ответить с цитированием
Старый 26.07.2012, 15:52   #3
foldel
Оператор ЭВМ
 
Аватар для foldel
 
Регистрация: 18.11.2010
Сообщений: 23
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Как работает алгоритм перегрузки метода?

Хм... Мне это мало о чем говорит...
__________________
KISS
(Offline)
 
Ответить с цитированием
Старый 26.07.2012, 16:11   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Как работает алгоритм перегрузки метода?

С# ругнётся и не подберёт нужный. Тебе нужно будет кастовать в нужный формат.
(Offline)
 
Ответить с цитированием
Старый 28.07.2012, 00:44   #5
foldel
Оператор ЭВМ
 
Аватар для foldel
 
Регистрация: 18.11.2010
Сообщений: 23
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Как работает алгоритм перегрузки метода?

Мне всего лишь нужно знать как работает этот алгоритм, хочу написать компилятор в своему языку программирования.
__________________
KISS
(Offline)
 
Ответить с цитированием
Старый 28.07.2012, 01:15   #6
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Как работает алгоритм перегрузки метода?

Сообщение от foldel Посмотреть сообщение
Мне всего лишь нужно знать как работает этот алгоритм, хочу написать компилятор в своему языку программирования.
"всего-лишь" это как-то оптимистично.
и что за компилятор, расскажи задумку?
(Offline)
 
Ответить с цитированием
Старый 28.07.2012, 02:02   #7
jimon
 
Сообщений: n/a
Ответ: Как работает алгоритм перегрузки метода?

foldel
у тебя будет таблица всех операторов приведения типов (aka из int в float и подобные), во время компиляции получаешь вызываемые типы и список методов которые можно вызвать, самый топорный вариант - начинаешь перебирать все операторы приведения и строить цепочку (например привести из long int в int, а потом в float), если удалось построить цепочку только для одного метода из нескольких перегруженных - ок, если удалось для нескольких - кидаем ошибку
 
Ответить с цитированием
Старый 29.07.2012, 19:16   #8
foldel
Оператор ЭВМ
 
Аватар для foldel
 
Регистрация: 18.11.2010
Сообщений: 23
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Как работает алгоритм перегрузки метода?

Ну вообще мне сразу хотелось сделать компилятор для телефона, но со временем он так вырос, что я понял что на телефоне ему делать нечего, и продолжил писать уже для компа.
Он написан на Java и имеет свою виртуальную машину(которая естественно тоже написана на Java). Спецификация виртуальной машины похожа на JavaVM. Пока это чисто процедурный язык программирования.
Вот некоторая информация по языку:

Структура программы:

Program <Имя программы> {

    
record
    
{
        <
Имя записи>:
        {
            <
Тип поля> <Имя поля>;
        }
    }

    var 
    {
        <
Глобальные переменные>
    }

    
forward
    
{
        function <
Имя функции>(<Аргументы функции>):<Тип функции>;
    }
    
    
constructor
    
{
        <
Инструкции>
    }
    
    function <
Имя функции>(<Аргументы функции>):<Тип функции>;
    
label 
    
{
        <
Имя метки>;
    }
    var 
    {
        <
Тип переменной> <Имя переменной>;
    }
    {
        <
Инструкции>
    }
    
    
destructor
    
{
        <
Инструкции>
    }

Типы данных:

Void
Integer
String
Char
Float
Boolean

Вот выкладываю сырую версию программы(ну ОЧЕНЬ сырую и убогую).
В архиве Shrimp.jar - это и есть компилятор и runtime. Все остальные файлы - демонстративные исходники.
После компиляции исполняемые исполняемый файл будет в папке output(там где и программа).
Вложения
Тип файла: zip Shrimp.zip (92.2 Кб, 424 просмотров)
__________________
KISS
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:19.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com