Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
Внизперегрузка Найти похожие ветки
← →
Minog (2003-03-26 13:11) [0]Что такое перегрузка(overloading) и зачем она нужна?
← →
MBo (2003-03-26 13:21) [1]может быть несколько процедур или функций с одинаковым именем, но разным списком параметров, если они описаны с модификатором overload.
function ConvertToString(Value:Integer):String;overload;
function ConvertToString(Value:Double):String;overload;
компилятор по типу параметров разбирается, вызовкакой именно функции подставить
var i:integer;
s:=ConvertToString(i);
используется первая функция
← →
malkolinge (2003-03-26 18:05) [2]Кстати есть еще и неправильная перегрузка
Например :
function ConvertToString(Value:Integer):String;overload;
function ConvertToString(Value:byte):String;overload;
Компилятор не сможет узнать какую функцию вызвать при вызове , например
ConvertToString(3)
← →
Anatoly Podgoretsky (2003-03-26 18:10) [3]Задача программиста не допускать одназначности - ConvertToString(Byte(3)), но ты уверен, что будет проблема?
← →
malkolinge (2003-03-26 18:19) [4]Щас попробу......Пробую
Код
procedure TForm1.Button1Click(Sender: TObject);
function F(g:Integer):String;overload;
begin
Result:="Integer";
end;
function F(g:byte):String;overload;
begin
Result:="byte"
end;
begin
Showmessage(F(567));
end;
При вызове F c параметром до 255 выводиться byte дальше для Integer.
Т.е повод для флейма, может это хорошо а может и нет, с одной стороный мы знаем, что вызовется а другой вроде как нет
F(Round(Sqr(32)-size+param*5 )) - ^)))))
← →
Anatoly Podgoretsky (2003-03-26 18:23) [5]Отсюда вывод, что это от лукавого, требуется осмотрительность, а если модуль чужой и плохо документирован.
← →
malkolinge (2003-03-26 18:28) [6]В общем насколько я помню, правила хорошего тона говорят о том, что так делать нельзя
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c